{
  "id": "0e31c5b834744369fc4760ba11bd0b05",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.7.6",
  "solcLongVersion": "0.7.6+commit.7338295f",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/token/ERC1155721/mocks/ERC1155721InventoryPausableMock.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 {IERC1155721Inventory} from \"./..//interfaces/IERC1155721Inventory.sol\";\nimport {IERC1155721InventoryBurnable} from \"./../interfaces/IERC1155721InventoryBurnable.sol\";\nimport {ManagedIdentity} from \"@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol\";\nimport {UsingUniversalForwarding} from \"ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol\";\nimport {ERC1155721InventoryBurnableMock} from \"./ERC1155721InventoryBurnableMock.sol\";\nimport {Pausable} from \"@animoca/ethereum-contracts-core/contracts/lifecycle/Pausable.sol\";\n\n/**\n * @title ERC1155 $ ERC721 Inventory Pausable Mock.\n * @dev The minting functions are usable while paused as it can be useful for contract maintenance such as contract migration.\n */\ncontract ERC1155721InventoryPausableMock is Pausable, ERC1155721InventoryBurnableMock {\n    constructor(\n        IForwarderRegistry forwarderRegistry,\n        address universalForwarder,\n        uint256 collectionMaskLength\n    ) ERC1155721InventoryBurnableMock(forwarderRegistry, universalForwarder, collectionMaskLength) Pausable(false) {}\n\n    //================================================== Pausable (admin) ===================================================//\n\n    /// @dev Reverts if the sender is not the contract owner.\n    function pause() external virtual {\n        _requireOwnership(_msgSender());\n        _pause();\n    }\n\n    /// @dev Reverts if the sender is not the contract owner.\n    function unpause() external virtual {\n        _requireOwnership(_msgSender());\n        _unpause();\n    }\n\n    //======================================================= ERC721 ========================================================//\n\n    /// @inheritdoc IERC1155721Inventory\n    /// @dev Reverts if the contract is paused.\n    function transferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) public virtual override {\n        _requireNotPaused();\n        super.transferFrom(from, to, tokenId);\n    }\n\n    /// @inheritdoc IERC1155721Inventory\n    /// @dev Reverts if the contract is paused.\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) public virtual override {\n        _requireNotPaused();\n        super.safeTransferFrom(from, to, tokenId);\n    }\n\n    /// @inheritdoc IERC1155721Inventory\n    /// @dev Reverts if the contract is paused.\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory data\n    ) public virtual override {\n        _requireNotPaused();\n        super.safeTransferFrom(from, to, tokenId, data);\n    }\n\n    //================================================= ERC721BatchTransfer =================================================//\n\n    /// @inheritdoc IERC1155721Inventory\n    /// @dev Reverts if the contract is paused.\n    function batchTransferFrom(\n        address from,\n        address to,\n        uint256[] memory nftIds\n    ) public virtual override {\n        _requireNotPaused();\n        super.batchTransferFrom(from, to, nftIds);\n    }\n\n    //======================================================= ERC1155 =======================================================//\n\n    /// @inheritdoc IERC1155721Inventory\n    /// @dev Reverts if the contract is paused.\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 id,\n        uint256 value,\n        bytes memory data\n    ) public virtual override {\n        _requireNotPaused();\n        super.safeTransferFrom(from, to, id, value, data);\n    }\n\n    /// @inheritdoc IERC1155721Inventory\n    /// @dev Reverts if the contract is paused.\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 {\n        _requireNotPaused();\n        super.safeBatchTransferFrom(from, to, ids, values, data);\n    }\n\n    //============================================= ERC1155721InventoryBurnable =============================================//\n\n    /// @inheritdoc IERC1155721InventoryBurnable\n    /// @dev Reverts if the contract is paused.\n    function burnFrom(\n        address from,\n        uint256 id,\n        uint256 value\n    ) public virtual override {\n        _requireNotPaused();\n        super.burnFrom(from, id, value);\n    }\n\n    /// @inheritdoc IERC1155721InventoryBurnable\n    /// @dev Reverts if the contract is paused.\n    function batchBurnFrom(\n        address from,\n        uint256[] memory ids,\n        uint256[] memory values\n    ) public virtual override {\n        _requireNotPaused();\n        super.batchBurnFrom(from, ids, values);\n    }\n\n    /// @inheritdoc IERC1155721InventoryBurnable\n    /// @dev Reverts if the contract is paused.\n    function batchBurnFrom(address from, uint256[] memory nftIds) public virtual override {\n        _requireNotPaused();\n        super.batchBurnFrom(from, nftIds);\n    }\n\n    //======================================== Meta Transactions Internal Functions =========================================//\n\n    function _msgSender() internal view virtual override(ManagedIdentity, ERC1155721InventoryBurnableMock) returns (address payable) {\n        return UsingUniversalForwarding._msgSender();\n    }\n\n    function _msgData() internal view virtual override(ManagedIdentity, ERC1155721InventoryBurnableMock) returns (bytes memory ret) {\n        return UsingUniversalForwarding._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"
      },
      "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/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"
      },
      "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"
      },
      "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"
      },
      "@animoca/ethereum-contracts-core/contracts/lifecycle/Pausable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.6 <0.8.0;\n\nimport {ManagedIdentity} from \"../metatx/ManagedIdentity.sol\";\n\n/**\n * @dev Contract which allows children to implement pausability.\n */\nabstract contract Pausable is ManagedIdentity {\n    /**\n     * @dev Emitted when the pause is triggered by `account`.\n     */\n    event Paused(address account);\n\n    /**\n     * @dev Emitted when the pause is lifted by `account`.\n     */\n    event Unpaused(address account);\n\n    bool public paused;\n\n    constructor(bool paused_) {\n        paused = paused_;\n    }\n\n    function _requireNotPaused() internal view {\n        require(!paused, \"Pausable: paused\");\n    }\n\n    function _requirePaused() internal view {\n        require(paused, \"Pausable: not paused\");\n    }\n\n    /**\n     * @dev Triggers stopped state.\n     *\n     * Requirements:\n     *\n     * - The contract must not be paused.\n     */\n    function _pause() internal virtual {\n        _requireNotPaused();\n        paused = true;\n        emit Paused(_msgSender());\n    }\n\n    /**\n     * @dev Returns to normal state.\n     *\n     * Requirements:\n     *\n     * - The contract must be paused.\n     */\n    function _unpause() internal virtual {\n        _requirePaused();\n        paused = false;\n        emit Unpaused(_msgSender());\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/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/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/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/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"
      },
      "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"
      },
      "@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"
      },
      "@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"
      },
      "@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"
      },
      "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/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/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/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/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": 250
      },
      "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": "608060405234801561001057600080fd5b506040516104b93803806104b98339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b03831690811782556040518392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506100878161008d565b506100dc565b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6103ce806100eb6000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80638da5cb5b1461005c578063983b2d561461008057806398650275146100a8578063aa271e1a146100b0578063f2fde38b146100ea575b600080fd5b610064610110565b604080516001600160a01b039092168252519081900360200190f35b6100a66004803603602081101561009657600080fd5b50356001600160a01b031661011f565b005b6100a661013b565b6100d6600480360360208110156100c657600080fd5b50356001600160a01b0316610199565b604080519115158252519081900360200190f35b6100a66004803603602081101561010057600080fd5b50356001600160a01b03166101ae565b6000546001600160a01b031690565b61012f61012a610214565b610218565b610138816102dc565b50565b6000610145610214565b90506101508161032b565b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b60016020526000908152604090205460ff1681565b6101b961012a610214565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b3390565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561025157600080fd5b505afa158015610265573d6000803e3d6000fd5b505050506040513d602081101561027b57600080fd5b50516001600160a01b03828116911614610138576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6001600160a01b03811660009081526001602052604090205460ff16610138576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fdfea2646970667358221220fd94d3032409f39cb0bfa244ff811812595c102b84235578cf07adf5ec2ff44d64736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x4B9 CODESIZE SUB DUP1 PUSH2 0x4B9 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 0x3CE 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 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0x80 JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0xB0 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xEA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x110 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 0xA6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11F JUMP JUMPDEST STOP JUMPDEST PUSH2 0xA6 PUSH2 0x13B JUMP JUMPDEST PUSH2 0xD6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x199 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1AE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x12F PUSH2 0x12A PUSH2 0x214 JUMP JUMPDEST PUSH2 0x218 JUMP JUMPDEST PUSH2 0x138 DUP2 PUSH2 0x2DC JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x145 PUSH2 0x214 JUMP JUMPDEST SWAP1 POP PUSH2 0x150 DUP2 PUSH2 0x32B 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 0x1B9 PUSH2 0x12A PUSH2 0x214 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 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 0x251 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x265 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 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x138 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 0x138 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 REVERT SWAP5 0xD3 SUB 0x24 MULMOD RETURN SWAP13 0xB0 0xBF LOG2 DIFFICULTY SELFDESTRUCT DUP2 XOR SLT MSIZE 0x5C LT 0x2B DUP5 0x23 SSTORE PUSH25 0xCF07ADF5EC2FF44D64736F6C63430007060033000000000000 ",
              "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": "608060405234801561001057600080fd5b50600436106100575760003560e01c80638da5cb5b1461005c578063983b2d561461008057806398650275146100a8578063aa271e1a146100b0578063f2fde38b146100ea575b600080fd5b610064610110565b604080516001600160a01b039092168252519081900360200190f35b6100a66004803603602081101561009657600080fd5b50356001600160a01b031661011f565b005b6100a661013b565b6100d6600480360360208110156100c657600080fd5b50356001600160a01b0316610199565b604080519115158252519081900360200190f35b6100a66004803603602081101561010057600080fd5b50356001600160a01b03166101ae565b6000546001600160a01b031690565b61012f61012a610214565b610218565b610138816102dc565b50565b6000610145610214565b90506101508161032b565b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b60016020526000908152604090205460ff1681565b6101b961012a610214565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b3390565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561025157600080fd5b505afa158015610265573d6000803e3d6000fd5b505050506040513d602081101561027b57600080fd5b50516001600160a01b03828116911614610138576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6001600160a01b03811660009081526001602052604090205460ff16610138576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fdfea2646970667358221220fd94d3032409f39cb0bfa244ff811812595c102b84235578cf07adf5ec2ff44d64736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0x80 JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0xB0 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xEA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x110 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 0xA6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11F JUMP JUMPDEST STOP JUMPDEST PUSH2 0xA6 PUSH2 0x13B JUMP JUMPDEST PUSH2 0xD6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x199 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1AE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x12F PUSH2 0x12A PUSH2 0x214 JUMP JUMPDEST PUSH2 0x218 JUMP JUMPDEST PUSH2 0x138 DUP2 PUSH2 0x2DC JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x145 PUSH2 0x214 JUMP JUMPDEST SWAP1 POP PUSH2 0x150 DUP2 PUSH2 0x32B 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 0x1B9 PUSH2 0x12A PUSH2 0x214 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 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 0x251 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x265 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 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x138 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 0x138 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 REVERT SWAP5 0xD3 SUB 0x24 MULMOD RETURN SWAP13 0xB0 0xBF LOG2 DIFFICULTY SELFDESTRUCT DUP2 XOR SLT MSIZE 0x5C LT 0x2B DUP5 0x23 SSTORE PUSH25 0xCF07ADF5EC2FF44D64736F6C63430007060033000000000000 ",
              "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;-1:-1:-1;;;;;1568:17:2;;;;;;;;;1600:38;;1568:17;;1621:6;;;1600:38;;1568:6;1600:38;1448:197;:::o;355:104:5:-;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/lifecycle/Pausable.sol": {
        "Pausable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "Paused",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "Unpaused",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "paused",
              "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": {
              "paused()": "5c975abb"
            }
          }
        }
      },
      "@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": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220053db4283145b6a3a921723a480f7c1e6c4e4ccfacef71173d0622ba2c21d00f64736f6c63430007060033",
              "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 SDIV RETURNDATASIZE 0xB4 0x28 BALANCE GASLIMIT 0xB6 LOG3 0xA9 0x21 PUSH19 0x3A480F7C1E6C4E4CCFACEF71173D0622BA2C21 0xD0 0xF PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "347:1672:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220053db4283145b6a3a921723a480f7c1e6c4e4ccfacef71173d0622ba2c21d00f64736f6c63430007060033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SDIV RETURNDATASIZE 0xB4 0x28 BALANCE GASLIMIT 0xB6 LOG3 0xA9 0x21 PUSH19 0x3A480F7C1E6C4E4CCFACEF71173D0622BA2C21 0xD0 0xF PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "347:1672:6:-: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": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122023164bb5a0ea8aac944a1b9af8c6dd2de67f3ab72376dce9b5f1056873d1be1564736f6c63430007060033",
              "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 0x23 AND 0x4B 0xB5 LOG0 0xEA DUP11 0xAC SWAP5 0x4A SHL SWAP11 0xF8 0xC6 0xDD 0x2D 0xE6 PUSH32 0x3AB72376DCE9B5F1056873D1BE1564736F6C6343000706003300000000000000 ",
              "sourceMap": "311:981:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122023164bb5a0ea8aac944a1b9af8c6dd2de67f3ab72376dce9b5f1056873d1be1564736f6c63430007060033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x23 AND 0x4B 0xB5 LOG0 0xEA DUP11 0xAC SWAP5 0x4A SHL SWAP11 0xF8 0xC6 0xDD 0x2D 0xE6 PUSH32 0x3AB72376DCE9B5F1056873D1BE1564736F6C6343000706003300000000000000 ",
              "sourceMap": "311:981:8:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "@animoca/ethereum-contracts-core/contracts/utils/types/UInt256ToDecimalString.sol": {
        "UInt256ToDecimalString": {
          "abi": [],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220dec867f623b9ec5505d61cad773a13dcf9662013afcc5ec0bfdae78aff5d029664736f6c63430007060033",
              "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 0xDE 0xC8 PUSH8 0xF623B9EC5505D61C 0xAD PUSH24 0x3A13DCF9662013AFCC5EC0BFDAE78AFF5D029664736F6C63 NUMBER STOP SMOD MOD STOP CALLER ",
              "sourceMap": "239:585:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220dec867f623b9ec5505d61cad773a13dcf9662013afcc5ec0bfdae78aff5d029664736f6c63430007060033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDE 0xC8 PUSH8 0xF623B9EC5505D61C 0xAD PUSH24 0x3A13DCF9662013AFCC5EC0BFDAE78AFF5D029664736F6C63 NUMBER STOP SMOD MOD STOP CALLER ",
              "sourceMap": "239:585:9:-: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": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122006cea46a9f5e6bed6cbfa0c19ca3455e2bf6b4d691438dfa2f433100fb4c4d9864736f6c63430007060033",
              "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 MOD 0xCE LOG4 PUSH11 0x9F5E6BED6CBFA0C19CA345 0x5E 0x2B 0xF6 0xB4 0xD6 SWAP2 NUMBER DUP14 STATICCALL 0x2F NUMBER BALANCE STOP 0xFB 0x4C 0x4D SWAP9 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "564:873:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122006cea46a9f5e6bed6cbfa0c19ca3455e2bf6b4d691438dfa2f433100fb4c4d9864736f6c63430007060033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MOD 0xCE LOG4 PUSH11 0x9F5E6BED6CBFA0C19CA345 0x5E 0x2B 0xF6 0xB4 0xD6 SWAP2 NUMBER DUP14 STATICCALL 0x2F NUMBER BALANCE STOP 0xFB 0x4C 0x4D SWAP9 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "564:873:12:-: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": "60e06040523480156200001157600080fd5b5060405162005f7438038062005f74833981810160405260608110156200003757600080fd5b50805160208083015160409384015184518086018652601f81527f45524331313535373231496e76656e746f72794275726e61626c654d6f636b008185015285518087018752600481526324a72b2160e11b94810194909452600080546001600160a01b03191633908117825596519596939592949192859184918491849182918c918c918b918291907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160601b0319606091821b811660a05291901b16608052801580159062000112575061010081105b62000164576040805162461bcd60e51b815260206004820152601c60248201527f496e76656e746f72793a2077726f6e67206d61736b206c656e67746800000000604482015290519081900360640190fd5b60c05282516200017c90600690602086019062000200565b5081516200019290600790602085019062000200565b50505050505050620001aa81620001b460201b60201c565b50505050620002ac565b6001600160a01b0381166000818152600b6020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262000238576000855562000283565b82601f106200025357805160ff191683800117855562000283565b8280016001018555821562000283579182015b828111156200028357825182559160200191906001019062000266565b506200029192915062000295565b5090565b5b8082111562000291576000815560010162000296565b60805160601c60a05160601c60c051615c0462000370600039806114b15280611976528061203a52806120b252806123a0528061256e52806125e15280612753528061291b5280612c205280612fcb528061302f52806135b5528061386852806138ea5280613ad05280613ccf5280613d9b5280613f805280614097528061449a52806147b75280614c0652806153bd525080611c4152806150e4528061588f525080611c7c52806150a9528061513c528061586552806158f05250615c046000f3fe608060405234801561001057600080fd5b50600436106102735760003560e01c80638053493411610151578063c3666c36116100c3578063e8ab9ccc11610087578063e8ab9ccc1461106e578063e985e9c5146111cc578063f242432a146111fa578063f2472965146112c3578063f2fde38b14611374578063f3993d111461139a57610273565b8063c3666c3614610f01578063c4c2bfdc1461100f578063c7778baa14611017578063c87b56dd14611034578063d0011d9d1461105157610273565b806398650275116101155780639865027514610da7578063a22cb46514610daf578063aa271e1a14610ddd578063adebf6f214610e03578063b88d4fde14610e20578063bd85b03914610ee457610273565b80638053493414610bbb5780638832e6e314610cee5780638da5cb5b14610d7157806395d89b4114610d79578063983b2d5614610d8157610273565b806342842e0e116101ea5780635b2bd79e116101ae5780635b2bd79e1461096a5780635cfa9297146109725780636352211e146109fc57806370a0823114610a1957806373c8a95814610a3f5780637e518ec814610b4d57610273565b806342842e0e146107655780634684d7e91461079b5780634e1273f414610819578063510b515814610927578063572b6c051461094457610273565b80630d6a5bbb1161023c5780630d6a5bbb146103d55780630e89341c146104f3578063124d91e51461051057806323b872dd146105425780632eb2c2d61461057857806340c10f191461073957610273565b8062fdd58e1461027857806301ffc9a7146102b657806306fdde03146102f1578063081812fc1461036e578063095ea7b3146103a7575b600080fd5b6102a46004803603604081101561028e57600080fd5b506001600160a01b038135169060200135611454565b60408051918252519081900360200190f35b6102dd600480360360208110156102cc57600080fd5b50356001600160e01b03191661153a565b604080519115158252519081900360200190f35b6102f9611567565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561033357818101518382015260200161031b565b50505050905090810190601f1680156103605780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61038b6004803603602081101561038457600080fd5b50356115fe565b604080516001600160a01b039092168252519081900360200190f35b6103d3600480360360408110156103bd57600080fd5b506001600160a01b03813516906020013561169b565b005b6103d3600480360360808110156103eb57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561041557600080fd5b82018360208201111561042757600080fd5b803590602001918460208302840111600160201b8311171561044857600080fd5b919390929091602081019035600160201b81111561046557600080fd5b82018360208201111561047757600080fd5b803590602001918460208302840111600160201b8311171561049857600080fd5b919390929091602081019035600160201b8111156104b557600080fd5b8201836020820111156104c757600080fd5b803590602001918460018302840111600160201b831117156104e857600080fd5b509092509050611871565b6102f96004803603602081101561050957600080fd5b503561192c565b6103d36004803603606081101561052657600080fd5b506001600160a01b038135169060208101359060400135611937565b6103d36004803603606081101561055857600080fd5b506001600160a01b03813581169160208101359091169060400135611a78565b6103d3600480360360a081101561058e57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156105c157600080fd5b8201836020820111156105d357600080fd5b803590602001918460208302840111600160201b831117156105f457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561064357600080fd5b82018360208201111561065557600080fd5b803590602001918460208302840111600160201b8311171561067657600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156106c557600080fd5b8201836020820111156106d757600080fd5b803590602001918460018302840111600160201b831117156106f857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611a9a945050505050565b6103d36004803603604081101561074f57600080fd5b506001600160a01b038135169060200135611aae565b6103d36004803603606081101561077b57600080fd5b506001600160a01b03813581169160208101359091169060400135611ad9565b6103d3600480360360408110156107b157600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156107db57600080fd5b8201836020820111156107ed57600080fd5b803590602001918460208302840111600160201b8311171561080e57600080fd5b509092509050611af6565b6108d76004803603604081101561082f57600080fd5b810190602081018135600160201b81111561084957600080fd5b82018360208201111561085b57600080fd5b803590602001918460208302840111600160201b8311171561087c57600080fd5b919390929091602081019035600160201b81111561089957600080fd5b8201836020820111156108ab57600080fd5b803590602001918460208302840111600160201b831117156108cc57600080fd5b509092509050611b3e565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156109135781810151838201526020016108fb565b505050509050019250505060405180910390f35b61038b6004803603602081101561093d57600080fd5b5035611c32565b6102dd6004803603602081101561095a57600080fd5b50356001600160a01b0316611c3d565b6102f9611cb6565b6103d36004803603608081101561098857600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b8111156109be57600080fd5b8201836020820111156109d057600080fd5b803590602001918460018302840111600160201b831117156109f157600080fd5b509092509050611d44565b61038b60048036036020811015610a1257600080fd5b5035611d91565b6102a460048036036020811015610a2f57600080fd5b50356001600160a01b0316611d9c565b6103d360048036036060811015610a5557600080fd5b810190602081018135600160201b811115610a6f57600080fd5b820183602082011115610a8157600080fd5b803590602001918460208302840111600160201b83111715610aa257600080fd5b919390929091602081019035600160201b811115610abf57600080fd5b820183602082011115610ad157600080fd5b803590602001918460208302840111600160201b83111715610af257600080fd5b919390929091602081019035600160201b811115610b0f57600080fd5b820183602082011115610b2157600080fd5b803590602001918460208302840111600160201b83111715610b4257600080fd5b509092509050611e0f565b6103d360048036036020811015610b6357600080fd5b810190602081018135600160201b811115610b7d57600080fd5b820183602082011115610b8f57600080fd5b803590602001918460018302840111600160201b83111715610bb057600080fd5b509092509050611f01565b6103d360048036036060811015610bd157600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610bfb57600080fd5b820183602082011115610c0d57600080fd5b803590602001918460208302840111600160201b83111715610c2e57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b811115610c7d57600080fd5b820183602082011115610c8f57600080fd5b803590602001918460208302840111600160201b83111715610cb057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611f7d945050505050565b6103d360048036036060811015610d0457600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b811115610d3357600080fd5b820183602082011115610d4557600080fd5b803590602001918460018302840111600160201b83111715610d6657600080fd5b509092509050612226565b61038b61227b565b6102f961228a565b6103d360048036036020811015610d9757600080fd5b50356001600160a01b03166122eb565b6103d3612302565b6103d360048036036040811015610dc557600080fd5b506001600160a01b0381351690602001351515612360565b6102dd60048036036020811015610df357600080fd5b50356001600160a01b031661236a565b6102dd60048036036020811015610e1957600080fd5b503561237f565b6103d360048036036080811015610e3657600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b811115610e7057600080fd5b820183602082011115610e8257600080fd5b803590602001918460018302840111600160201b83111715610ea357600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061238a945050505050565b6102a460048036036020811015610efa57600080fd5b5035612398565b6103d360048036036060811015610f1757600080fd5b810190602081018135600160201b811115610f3157600080fd5b820183602082011115610f4357600080fd5b803590602001918460208302840111600160201b83111715610f6457600080fd5b919390929091602081019035600160201b811115610f8157600080fd5b820183602082011115610f9357600080fd5b803590602001918460208302840111600160201b83111715610fb457600080fd5b919390929091602081019035600160201b811115610fd157600080fd5b820183602082011115610fe357600080fd5b803590602001918460208302840111600160201b8311171561100457600080fd5b50909250905061240f565b6102f9612557565b6102a46004803603602081101561102d57600080fd5b5035612566565b6102f96004803603602081101561104a57600080fd5b5035612605565b6103d36004803603602081101561106757600080fd5b5035612678565b6103d36004803603608081101561108457600080fd5b810190602081018135600160201b81111561109e57600080fd5b8201836020820111156110b057600080fd5b803590602001918460208302840111600160201b831117156110d157600080fd5b919390929091602081019035600160201b8111156110ee57600080fd5b82018360208201111561110057600080fd5b803590602001918460208302840111600160201b8311171561112157600080fd5b919390929091602081019035600160201b81111561113e57600080fd5b82018360208201111561115057600080fd5b803590602001918460208302840111600160201b8311171561117157600080fd5b919390929091602081019035600160201b81111561118e57600080fd5b8201836020820111156111a057600080fd5b803590602001918460018302840111600160201b831117156111c157600080fd5b50909250905061268c565b6102dd600480360360408110156111e257600080fd5b506001600160a01b03813581169160200135166126a7565b6103d3600480360360a081101561121057600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b81111561124f57600080fd5b82018360208201111561126157600080fd5b803590602001918460018302840111600160201b8311171561128257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506126ba945050505050565b6103d3600480360360408110156112d957600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561130357600080fd5b82018360208201111561131557600080fd5b803590602001918460208302840111600160201b8311171561133657600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061282a945050505050565b6103d36004803603602081101561138a57600080fd5b50356001600160a01b0316612a85565b6103d3600480360360608110156113b057600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156113e357600080fd5b8201836020820111156113f557600080fd5b803590602001918460208302840111600160201b8311171561141657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612ade945050505050565b60006001600160a01b0383166114ab576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a207a65726f206164647265737360481b604482015290519081900360640190fd5b6114d5827f0000000000000000000000000000000000000000000000000000000000000000612dc1565b1561150f576000828152600460205260409020546001600160a01b03848116911614611502576000611505565b60015b60ff169050611534565b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216630a216a2b60e31b148061155f575061155f82612de7565b90505b919050565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156115f35780601f106115c8576101008083540402835291602001916115f3565b820191906000526020600020905b8154815290600101906020018083116115d657829003601f168201915b505050505090505b90565b6000818152600460205260408120546001600160a01b038116611666576040805162461bcd60e51b815260206004820152601b60248201527a125b9d995b9d1bdc9e4e881b9bdb8b595e1a5cdd1a5b99c8139195602a1b604482015290519081900360640190fd5b600160a01b8116156116915750506000818152600960205260409020546001600160a01b0316611562565b6000915050611562565b600081815260046020526040902054806116fa576040805162461bcd60e51b815260206004820152601b60248201527a125b9d995b9d1bdc9e4e881b9bdb8b595e1a5cdd1a5b99c8139195602a1b604482015290519081900360640190fd5b806001600160a01b038481169082161415611757576040805162461bcd60e51b8152602060048201526018602482015277125b9d995b9d1bdc9e4e881cd95b198b585c1c1c9bdd985b60421b604482015290519081900360640190fd5b61176881611763612e0c565b612e16565b6117a7576040805162461bcd60e51b815260206004820152601e6024820152600080516020615b6f833981519152604482015290519081900360640190fd5b6001600160a01b0384166117e157600160a01b8216156117dc5760008381526004602052604090206001600160a01b03821690555b61182a565b600160a01b82178083146118015760008481526004602052604090208190555b50600083815260096020526040902080546001600160a01b0319166001600160a01b0386161790555b82846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b61188161187c612e0c565b612e62565b6119238787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250612ecf92505050565b50505050505050565b606061155f82613236565b6000611941612e0c565b9050600061194f8583612e16565b905061195a84613309565b156119705761196b85858584613313565b611a25565b61199a847f0000000000000000000000000000000000000000000000000000000000000000612dc1565b156119d8576119ad858585846000613455565b60405184906000906001600160a01b03881690600080516020615baf833981519152908390a4611a25565b6040805162461bcd60e51b815260206004820152601960248201527f496e76656e746f72793a206e6f74206120746f6b656e20696400000000000000604482015290519081900360640190fd5b60006001600160a01b0316856001600160a01b0316836001600160a01b0316600080516020615b4f8339815191528787604051808381526020018281526020019250505060405180910390a45050505050565b611a95838383604051806020016040528060008152506000613609565b505050565b611aa78585858585613751565b5050505050565b611ab961187c612e0c565b611ad58282604051806020016040528060008152506000613a75565b5050565b611a95838383604051806020016040528060008152506001613609565b611b0161187c612e0c565b611a9583838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613c0892505050565b6060838214611b82576040805162461bcd60e51b815260206004820152601e6024820152600080516020615b8f833981519152604482015290519081900360640190fd5b60008467ffffffffffffffff81118015611b9b57600080fd5b50604051908082528060200260200182016040528015611bc5578160200160208202803683370190505b50905060005b808614611c2857611c09878783818110611be157fe5b905060200201356001600160a01b0316868684818110611bfd57fe5b90506020020135611454565b828281518110611c1557fe5b6020908102919091010152600101611bcb565b5095945050505050565b600061155f82613f78565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148061155f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b600a805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015611d3c5780601f10611d1157610100808354040283529160200191611d3c565b820191906000526020600020905b815481529060010190602001808311611d1f57829003601f168201915b505050505081565b611d4f61187c612e0c565b611aa785858585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061401292505050565b600061155f82614154565b60006001600160a01b038216611df3576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a207a65726f206164647265737360481b604482015290519081900360640190fd5b506001600160a01b031660009081526008602052604090205490565b611e1f611e1a612e0c565b6141bc565b848381148015611e2e57508082145b611e7f576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114611ef757611eef888883818110611e9857fe5b905060200201356001600160a01b0316858584818110611eb457fe5b90506020020135888885818110611ec757fe5b905060200201356001600160a01b03166001600160a01b03166142809092919063ffffffff16565b600101611e82565b5050505050505050565b611f0c611e1a612e0c565b611f18600a8383615a65565b507f04b1dc5c136a3ce9fded8db0ce3d3366c58764ec3a8e4c2b9e52e4ddfe5ebbf7828260405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a15050565b815181518114611fc2576040805162461bcd60e51b815260206004820152601e6024820152600080516020615b8f833981519152604482015290519081900360640190fd5b6000611fcc612e0c565b90506000611fda8683612e16565b90506000806000805b86811461211d576000898281518110611ff857fe5b6020026020010151905061200b81613309565b156120345761202f8b828b858151811061202157fe5b602002602001015189613313565b612114565b61205e817f0000000000000000000000000000000000000000000000000000000000000000612dc1565b156119d8576120848b828b858151811061207457fe5b6020026020010151896001613455565b60405181906000906001600160a01b038e1690600080516020615baf833981519152908390a460006120d6827f00000000000000000000000000000000000000000000000000000000000000006142d2565b9050856120e95780955060019450612112565b85811461210b576120fb8c87876142e8565b9450600193929092019184612112565b8460010194505b505b50600101611fe3565b5082156121535761212f8984846142e8565b6001600160a01b038916600090815260086020526040902080549183019182900390555b60006001600160a01b0316896001600160a01b0316866001600160a01b0316600080516020615b2f8339815191528b8b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156121c75781810151838201526020016121af565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156122065781810151838201526020016121ee565b5050505090500194505050505060405180910390a4505050505050505050565b61223161187c612e0c565b612275848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250613a75915050565b50505050565b6000546001600160a01b031690565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156115f35780601f106115c8576101008083540402835291602001916115f3565b6122f6611e1a612e0c565b6122ff81614328565b50565b600061230c612e0c565b905061231781612e62565b6001600160a01b0381166000818152600b6020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b611ad58282614374565b600b6020526000908152604090205460ff1681565b600061155f82613309565b612275848484846001613609565b60006123c4827f0000000000000000000000000000000000000000000000000000000000000000612dc1565b156123fa576000828152600460205260409020546001600160a01b0316156123ed5760016123f0565b60005b60ff169050611562565b50600081815260036020526040902054611562565b61241a611e1a612e0c565b84838114801561242957508082145b61247a576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114611ef75785858281811061249057fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a858181106124bb57fe5b905060200201356001600160a01b03168787868181106124d757fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561253457600080fd5b505af1158015612548573d6000803e3d6000fd5b5050505080600101905061247d565b6060612561614450565b905090565b6000612592827f0000000000000000000000000000000000000000000000000000000000000000612dc1565b6125db576040805162461bcd60e51b8152602060048201526015602482015274125b9d995b9d1bdc9e4e881b9bdd08185b88139195605a1b604482015290519081900360640190fd5b61155f827f00000000000000000000000000000000000000000000000000000000000000006142d2565b6000818152600460205260409020546060906001600160a01b031661266f576040805162461bcd60e51b815260206004820152601b60248201527a125b9d995b9d1bdc9e4e881b9bdb8b595e1a5cdd1a5b99c8139195602a1b604482015290519081900360640190fd5b61155f8261192c565b612683611e1a612e0c565b6122ff81614494565b61269761187c612e0c565b611ef788888888888888886145e9565b60006126b3838361490e565b9392505050565b60006126c4612e0c565b90506001600160a01b03851661271f576040805162461bcd60e51b815260206004820152601b60248201527a496e76656e746f72793a207472616e7366657220746f207a65726f60281b604482015290519081900360640190fd5b600061272b8783612e16565b905061273685613309565b1561274d57612748878787878561493c565b6127bb565b612777857f0000000000000000000000000000000000000000000000000000000000000000612dc1565b156119d85761278b87878787856000614a95565b84866001600160a01b0316886001600160a01b0316600080516020615baf83398151915260405160405180910390a45b856001600160a01b0316876001600160a01b0316836001600160a01b0316600080516020615b4f8339815191528888604051808381526020018281526020019250505060405180910390a4612818866001600160a01b0316614c31565b15611923576119238787878787614c37565b6000612834612e0c565b905060006128428483612e16565b835190915060008167ffffffffffffffff8111801561286057600080fd5b5060405190808252806020026020018201604052801561288a578160200160208202803683370190505b50905060008060005b8481146129815760008882815181106128a857fe5b6020026020010151905060018583815181106128c057fe5b6020026020010181815250506128ed8a828785815181106128dd57fe5b60200260200101518a6001613455565b60405181906000906001600160a01b038d1690600080516020615baf833981519152908390a4600061293f827f00000000000000000000000000000000000000000000000000000000000000006142d2565b9050846129525780945060019350612977565b848114612970576129648b86866142e8565b80945060019350612977565b8360010193505b5050600101612893565b5081156129b3576129938883836142e8565b6001600160a01b0388166000908152600860205260409020805485900390555b60006001600160a01b0316886001600160a01b0316876001600160a01b0316600080516020615b2f8339815191528a87604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015612a27578181015183820152602001612a0f565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015612a66578181015183820152602001612a4e565b5050505090500194505050505060405180910390a45050505050505050565b612a90611e1a612e0c565b600080546001600160a01b0319166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001600160a01b038216612b37576040805162461bcd60e51b815260206004820152601b60248201527a496e76656e746f72793a207472616e7366657220746f207a65726f60281b604482015290519081900360640190fd5b6000612b41612e0c565b90506000612b4f8583612e16565b835190915060008167ffffffffffffffff81118015612b6d57600080fd5b50604051908082528060200260200182016040528015612b97578160200160208202803683370190505b50905060008060005b848114612c87576000888281518110612bb557fe5b602002602001015190506001858381518110612bcd57fe5b602002602001018181525050612be98b8b8360018b6001614a95565b808a6001600160a01b03168c6001600160a01b0316600080516020615baf83398151915260405160405180910390a46000612c44827f00000000000000000000000000000000000000000000000000000000000000006142d2565b905084612c575780945060019350612c7d565b848114612c7657612c6a8c8c8787614da8565b80945060019350612c7d565b8360010193505b5050600101612ba0565b508115612ca557612c9a89898484614da8565b612ca5898986614dfc565b876001600160a01b0316896001600160a01b0316612cc1612e0c565b6001600160a01b0316600080516020615b2f8339815191528a87604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015612d1f578181015183820152602001612d07565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015612d5e578181015183820152602001612d46565b5050505090500194505050505060405180910390a4612d85886001600160a01b0316614c31565b8015612d955750612d9588614e47565b15612db657612db68989898660405180602001604052806000815250614ec8565b505050505050505050565b6000600160ff1b8316158015906126b35750612ddc8261502d565b909216151592915050565b60006001600160e01b031982166318167c6d60e21b148061155f575061155f8261503e565b6000612561615099565b6000816001600160a01b0316836001600160a01b031614806126b35750506001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6001600160a01b0381166000908152600b602052604090205460ff166122ff576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b038416612f24576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b825182518114612f69576040805162461bcd60e51b815260206004820152601e6024820152600080516020615b8f833981519152604482015290519081900360640190fd5b6000806000805b8481146130f6576000888281518110612f8557fe5b602002602001015190506000888381518110612f9d57fe5b60200260200101519050612fb082613309565b15612fc557612fc08b83836151f9565b6130ec565b612fef827f0000000000000000000000000000000000000000000000000000000000000000612dc1565b156119d8576130018b838360016152e3565b60405182906001600160a01b038d1690600090600080516020615baf833981519152908290a46000613053837f00000000000000000000000000000000000000000000000000000000000000006142d2565b90508661306657809650600195506130ea565b8681146130e357856002600089815260200190815260200160002060008e6001600160a01b03166001600160a01b03168152602001908152602001600020600082825401925050819055508560036000898152602001908152602001600020600082825401925050819055508096508585019450600195506130ea565b8560010195505b505b5050600101612f70565b50821561314b5760008381526002602090815260408083206001600160a01b038c1680855290835281842080548701905586845260038352818420805487019055835260089091529020805491830191820190555b6001600160a01b038816600061315f612e0c565b6001600160a01b0316600080516020615b2f8339815191528a8a604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156131bd5781810151838201526020016131a5565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156131fc5781810151838201526020016131e4565b5050505090500194505050505060405180910390a4613223886001600160a01b0316614c31565b15611ef757611ef7600089898989614ec8565b6060600a61324383615430565b60405160200180838054600181600116156101000203166002900480156132a15780601f1061327f5761010080835404028352918201916132a1565b820191906000526020600020905b81548152906001019060200180831161328d575b5050825160208401908083835b602083106132cd5780518252601f1990920191602091820191016132ae565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529050919050565b600160ff1b161590565b8161335d576040805162461bcd60e51b8152602060048201526015602482015274496e76656e746f72793a207a65726f2076616c756560581b604482015290519081900360640190fd5b8061339d576040805162461bcd60e51b815260206004820152601e6024820152600080516020615b6f833981519152604482015290519081900360640190fd5b60008381526002602090815260408083206001600160a01b038816845290915290205482811015613415576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365000000604482015290519081900360640190fd5b60008481526002602090815260408083206001600160a01b0390981683529681528682209285900390925593845260039052509190208054919091039055565b826001146134a7576040805162461bcd60e51b815260206004820152601a602482015279496e76656e746f72793a2077726f6e67204e46542076616c756560301b604482015290519081900360640190fd5b6000848152600460205260409020546001600160a01b0386811690821614613511576040805162461bcd60e51b8152602060048201526018602482015277125b9d995b9d1bdc9e4e881b9bdb8b5bdddb99590813919560421b604482015290519081900360640190fd5b8261359057600160a01b81161580159061355157506000858152600960205260409020546001600160a01b0316613546612e0c565b6001600160a01b0316145b613590576040805162461bcd60e51b815260206004820152601e6024820152600080516020615b6f833981519152604482015290519081900360640190fd5b600085815260046020526040902061dead60f01b905581613601576135e0866135d9877f00000000000000000000000000000000000000000000000000000000000000006142d2565b60016142e8565b6001600160a01b038616600090815260086020526040902080546000190190555b505050505050565b6001600160a01b038416613662576040805162461bcd60e51b815260206004820152601b60248201527a496e76656e746f72793a207472616e7366657220746f207a65726f60281b604482015290519081900360640190fd5b600061366c612e0c565b9050600061367a8783612e16565b905061368c8787876001856000614a95565b84866001600160a01b0316886001600160a01b0316600080516020615baf83398151915260405160405180910390a4856001600160a01b0316876001600160a01b0316836001600160a01b0316600080516020615b4f833981519152886001604051808381526020018281526020019250505060405180910390a4613719866001600160a01b0316614c31565b156119235761372786614e47565b1561373f5761373a878787600188614c37565b611923565b8215611923576119238787878761550b565b6001600160a01b0384166137aa576040805162461bcd60e51b815260206004820152601b60248201527a496e76656e746f72793a207472616e7366657220746f207a65726f60281b604482015290519081900360640190fd5b8251825181146137ef576040805162461bcd60e51b815260206004820152601e6024820152600080516020615b8f833981519152604482015290519081900360640190fd5b60006137f9612e0c565b905060006138078883612e16565b90506000806000805b8681146139565760008a828151811061382557fe5b6020026020010151905061383881613309565b156138625761385d8d8d838d868151811061384f57fe5b60200260200101518a61493c565b61394d565b61388c817f0000000000000000000000000000000000000000000000000000000000000000612dc1565b156119d8576138b38d8d838d86815181106138a357fe5b60200260200101518a6001614a95565b808c6001600160a01b03168e6001600160a01b0316600080516020615baf83398151915260405160405180910390a4600061390e827f00000000000000000000000000000000000000000000000000000000000000006142d2565b905085613921578095506001945061394b565b858114613944576139348e8e8888614da8565b945060019392909201918461394b565b8460010194505b505b50600101613810565b508215613976576139698b8b8585614da8565b81016139768b8b83614dfc565b896001600160a01b03168b6001600160a01b0316613992612e0c565b6001600160a01b0316600080516020615b2f8339815191528c8c604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156139f05781810151838201526020016139d8565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015613a2f578181015183820152602001613a17565b5050505090500194505050505060405180910390a4613a568a6001600160a01b0316614c31565b15613a6857613a688b8b8b8b8b614ec8565b5050505050505050505050565b6001600160a01b038416613aca576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b613af4837f0000000000000000000000000000000000000000000000000000000000000000612dc1565b613b3d576040805162461bcd60e51b8152602060048201526015602482015274125b9d995b9d1bdc9e4e881b9bdd08185b88139195605a1b604482015290519081900360640190fd5b613b4b8484600160006152e3565b60405183906001600160a01b03861690600090600080516020615baf833981519152908290a46001600160a01b0384166000613b85612e0c565b6001600160a01b0316600080516020615b4f833981519152866001604051808381526020018281526020019250505060405180910390a4613bce846001600160a01b0316614c31565b1561227557613bdc84614e47565b15613bf557613bf060008585600186614c37565b612275565b801561227557612275600085858561550b565b6001600160a01b038216613c5d576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b805160008167ffffffffffffffff81118015613c7857600080fd5b50604051908082528060200260200182016040528015613ca2578160200160208202803683370190505b50905060008060005b848114613e2e576000868281518110613cc057fe5b60200260200101519050613cfd7f000000000000000000000000000000000000000000000000000000000000000082612dc190919063ffffffff16565b613d46576040805162461bcd60e51b8152602060048201526015602482015274125b9d995b9d1bdc9e4e881b9bdd08185b88139195605a1b604482015290519081900360640190fd5b6001858381518110613d5457fe5b602002602001018181525050613d6d88826001806152e3565b60405181906001600160a01b038a1690600090600080516020615baf833981519152908290a46000613dbf827f00000000000000000000000000000000000000000000000000000000000000006142d2565b905084613dd25780945060019350613e24565b848114613e1d5760008581526002602090815260408083206001600160a01b038d16845282528083208054880190559682526003905294909420805490930190925560019183613e24565b8360010193505b5050600101613cab565b5060008281526002602090815260408083206001600160a01b038a16808552908352818420805486019055858452600383528184208054860190558084526008909252822080548701905590613e82612e0c565b6001600160a01b0316600080516020615b2f8339815191528887604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015613ee0578181015183820152602001613ec8565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015613f1f578181015183820152602001613f07565b5050505090500194505050505060405180910390a4613f46866001600160a01b0316614c31565b8015613f565750613f5686614e47565b1561360157613601600087878660405180602001604052806000815250614ec8565b6000613fa4827f0000000000000000000000000000000000000000000000000000000000000000612dc1565b15613ff6576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b506000908152600560205260409020546001600160a01b031690565b6001600160a01b038416614067576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b6000614071612e0c565b905061407c84613309565b156140915761408c8585856151f9565b6140f4565b6140bb847f0000000000000000000000000000000000000000000000000000000000000000612dc1565b156119d8576140cd85858560006152e3565b60405184906001600160a01b03871690600090600080516020615baf833981519152908290a45b604080518581526020810185905281516001600160a01b038089169360009391861692600080516020615b4f8339815191529281900390910190a4614141856001600160a01b0316614c31565b15611aa757611aa7600086868686614c37565b6000818152600460205260408120546001600160a01b03811661155f576040805162461bcd60e51b815260206004820152601b60248201527a125b9d995b9d1bdc9e4e881b9bdb8b595e1a5cdd1a5b99c8139195602a1b604482015290519081900360640190fd5b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156141f557600080fd5b505afa158015614209573d6000803e3d6000fd5b505050506040513d602081101561421f57600080fd5b50516001600160a01b038281169116146122ff576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611a95908490615674565b60006142dd8261502d565b198316905092915050565b60008281526002602090815260408083206001600160a01b0390961683529481528482208054849003905592815260039092529190208054919091039055565b6001600160a01b0381166000818152600b6020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b600061437e612e0c565b9050806001600160a01b0316836001600160a01b031614156143e2576040805162461bcd60e51b8152602060048201526018602482015277125b9d995b9d1bdc9e4e881cd95b198b585c1c1c9bdd985b60421b604482015290519081900360640190fd5b6001600160a01b03818116600081815260016020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b606061445a615857565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b6144be817f0000000000000000000000000000000000000000000000000000000000000000612dc1565b15614510576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b6000818152600560205260409020546001600160a01b03161561457a576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206578697374696e6720636f6c6c656374696f6e0000604482015290519081900360640190fd5b614582612e0c565b600082815260056020526040902080546001600160a01b0319166001600160a01b03929092169190911790556145b781613309565b1515817f4ebf8ad0df535ba5e487bc9cb27fe44120ca81c3a95d3eba79c0bd1df2ab2d5d60405160405180910390a350565b8685811480156145f857508084145b614637576040805162461bcd60e51b815260206004820152601e6024820152600080516020615b8f833981519152604482015290519081900360640190fd5b6000614641612e0c565b905060005b828114613a685760008b8b8381811061465b57fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b031614156146cf576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b60008a8a848181106146dd57fe5b90506020020135905060008989858181106146f457fe5b90506020020135905061470682613309565b156147b1576147168383836151f9565b604080518381526020810183905281516001600160a01b0380871693600093918a1692600080516020615b4f8339815191529281900390910190a4614763836001600160a01b0316614c31565b156147ac576147ac60008484848c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250614c3792505050565b614900565b6147db827f0000000000000000000000000000000000000000000000000000000000000000612dc1565b156119d8576147ed83838360006152e3565b60405182906001600160a01b03851690600090600080516020615baf833981519152908290a4604080518381526001602082015281516001600160a01b0380871693600093918a1692600080516020615b4f8339815191529281900390910190a4614860836001600160a01b0316614c31565b156147ac5761486e83614e47565b156148bd576148b86000848460018c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250614c3792505050565b6147ac565b6147ac600084848b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061550b92505050565b505050806001019050614646565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b8061497c576040805162461bcd60e51b815260206004820152601e6024820152600080516020615b6f833981519152604482015290519081900360640190fd5b816149c6576040805162461bcd60e51b8152602060048201526015602482015274496e76656e746f72793a207a65726f2076616c756560581b604482015290519081900360640190fd5b60008381526002602090815260408083206001600160a01b038916845290915290205482811015614a3e576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365000000604482015290519081900360640190fd5b846001600160a01b0316866001600160a01b0316146136015760009384526002602090815260408086206001600160a01b039889168752909152808520918490039091559390941682529190208054909101905550565b82600114614ae7576040805162461bcd60e51b815260206004820152601a602482015279496e76656e746f72793a2077726f6e67204e46542076616c756560301b604482015290519081900360640190fd5b6000848152600460205260409020546001600160a01b0387811690821614614b51576040805162461bcd60e51b8152602060048201526018602482015277125b9d995b9d1bdc9e4e881b9bdb8b5bdddb99590813919560421b604482015290519081900360640190fd5b82614bd057600160a01b811615801590614b9157506000858152600960205260409020546001600160a01b0316614b86612e0c565b6001600160a01b0316145b614bd0576040805162461bcd60e51b815260206004820152601e6024820152600080516020615b6f833981519152604482015290519081900360640190fd5b60008581526004602052604090206001600160a01b03871690558161192357614bfb87876001614dfc565b6119238787614c2a887f00000000000000000000000000000000000000000000000000000000000000006142d2565b6001614da8565b3b151590565b63f23a6e6160e01b6001600160a01b03851663f23a6e61614c56612e0c565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614cd0578181015183820152602001614cb8565b50505050905090810190601f168015614cfd5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b158015614d2057600080fd5b505af1158015614d34573d6000803e3d6000fd5b505050506040513d6020811015614d4a57600080fd5b50516001600160e01b03191614611aa7576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220726566757365640000000000604482015290519081900360640190fd5b826001600160a01b0316846001600160a01b0316146122755760009182526002602090815260408084206001600160a01b039687168552909152808320805483900390559290931681522080549091019055565b816001600160a01b0316836001600160a01b031614611a95576001600160a01b0380841660009081526008602052604080822080548590039055918416815220805482019055505050565b60408051630271189760e51b6024808301919091528251808303909101815260449091018252602081810180516001600160e01b03166301ffc9a760e01b1781528251935160008082529485948594909392908183858b612710fa955080519450505050609e5a11614eb557fe5b828015614ebf5750815b95945050505050565b63bc197c8160e01b6001600160a01b03851663bc197c81614ee7612e0c565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015614f60578181015183820152602001614f48565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015614f9f578181015183820152602001614f87565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015614fdb578181015183820152602001614fc3565b50505050905090810190601f1680156150085780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b158015614d2057600080fd5b6001610100919091031b6000190190565b60006001600160e01b031982166380ac58cd60e01b148061506f57506001600160e01b03198216635b5e139f60e01b145b8061508a57506001600160e01b0319821663f3993d1160e01b145b8061155f575061155f826159ba565b600033816150a5615a3e565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148061511857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b156151265791506115fb9050565b6001600160a01b03821632148015906151e557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b1580156151b857600080fd5b505afa1580156151cc573d6000803e3d6000fd5b505050506040513d60208110156151e257600080fd5b50515b156151f35791506115fb9050565b50905090565b80615243576040805162461bcd60e51b8152602060048201526015602482015274496e76656e746f72793a207a65726f2076616c756560581b604482015290519081900360640190fd5b6000828152600360205260409020548181018181116152a9576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a20737570706c79206f766572666c6f77000000000000604482015290519081900360640190fd5b600093845260036020908152604080862092909255600281528185206001600160a01b039096168552949094525091902080549091019055565b81600114615335576040805162461bcd60e51b815260206004820152601a602482015279496e76656e746f72793a2077726f6e67204e46542076616c756560301b604482015290519081900360640190fd5b60008381526004602052604090205415615396576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206578697374696e672f6275726e74204e4654000000604482015290519081900360640190fd5b60008381526004602052604090206001600160a01b0385169055806122755760006153e1847f00000000000000000000000000000000000000000000000000000000000000006142d2565b600090815260036020908152604080832080546001908101909155600283528184206001600160a01b038a16855283528184208054820190556008909252909120805490910190555050505050565b60608161545557506040805180820190915260018152600360fc1b6020820152611562565b8160005b811561546d57600101600a82049150615459565b60008167ffffffffffffffff8111801561548657600080fd5b506040519080825280601f01601f1916602001820160405280156154b1576020820181803683370190505b50859350905060001982015b831561550257600a840660300160f81b828280600190039350815181106154e057fe5b60200101906001600160f81b031916908160001a905350600a840493506154bd565b50949350505050565b630a85bd0160e11b6001600160a01b03841663150b7a0261552a612e0c565b8786866040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561559d578181015183820152602001615585565b50505050905090810190601f1680156155ca5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156155ec57600080fd5b505af1158015615600573d6000803e3d6000fd5b505050506040513d602081101561561657600080fd5b50516001600160e01b03191614612275576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220726566757365640000000000604482015290519081900360640190fd5b816156876001600160a01b038216614c31565b6156d8576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b602083106157155780518252601f1990920191602091820191016156f6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114615777576040519150601f19603f3d011682016040523d82523d6000602084013e61577c565b606091505b509150915081156157fb578051156157f6578080602001905160208110156157a357600080fd5b50516157f6576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b611aa7565b805161584e576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b366000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168114806158c357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b156158da576158d0615a4a565b92509250506159b6565b6001600160a01b03811632148015906159a057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d6615925615a3e565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561597357600080fd5b505afa158015615987573d6000803e3d6000fd5b505050506040513d602081101561599d57600080fd5b50515b156159ad576158d0615a4a565b60003692509250505b9091565b60006001600160e01b031982166301ffc9a760e01b14806159eb57506001600160e01b03198216636cdb3d1360e11b145b80615a0657506001600160e01b031982166303a24d0760e21b145b80615a2157506001600160e01b031982166304e72e2360e11b145b8061155f5750506001600160e01b03191663bd85b03960e01b1490565b60131936013560601c90565b366000615a5d6013198301828481615b06565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282615a9b5760008555615ae1565b82601f10615ab45782800160ff19823516178555615ae1565b82800160010185558215615ae1579182015b82811115615ae1578235825591602001919060010190615ac6565b50615aed929150615af1565b5090565b5b80821115615aed5760008155600101615af2565b60008085851115615b15578182fd5b83861115615b21578182fd5b505082019391909203915056fe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fbc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000496e76656e746f72793a20696e636f6e73697374656e74206172726179730000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212204933b334c19fb0c285b9354e0a7eb102b3c322e6349f8b8b0adea5a4b3e7134364736f6c63430007060033",
              "opcodes": "PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x5F74 CODESIZE SUB DUP1 PUSH3 0x5F74 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 0x5C04 PUSH3 0x370 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x14B1 MSTORE DUP1 PUSH2 0x1976 MSTORE DUP1 PUSH2 0x203A MSTORE DUP1 PUSH2 0x20B2 MSTORE DUP1 PUSH2 0x23A0 MSTORE DUP1 PUSH2 0x256E MSTORE DUP1 PUSH2 0x25E1 MSTORE DUP1 PUSH2 0x2753 MSTORE DUP1 PUSH2 0x291B MSTORE DUP1 PUSH2 0x2C20 MSTORE DUP1 PUSH2 0x2FCB MSTORE DUP1 PUSH2 0x302F MSTORE DUP1 PUSH2 0x35B5 MSTORE DUP1 PUSH2 0x3868 MSTORE DUP1 PUSH2 0x38EA MSTORE DUP1 PUSH2 0x3AD0 MSTORE DUP1 PUSH2 0x3CCF MSTORE DUP1 PUSH2 0x3D9B MSTORE DUP1 PUSH2 0x3F80 MSTORE DUP1 PUSH2 0x4097 MSTORE DUP1 PUSH2 0x449A MSTORE DUP1 PUSH2 0x47B7 MSTORE DUP1 PUSH2 0x4C06 MSTORE DUP1 PUSH2 0x53BD MSTORE POP DUP1 PUSH2 0x1C41 MSTORE DUP1 PUSH2 0x50E4 MSTORE DUP1 PUSH2 0x588F MSTORE POP DUP1 PUSH2 0x1C7C MSTORE DUP1 PUSH2 0x50A9 MSTORE DUP1 PUSH2 0x513C MSTORE DUP1 PUSH2 0x5865 MSTORE DUP1 PUSH2 0x58F0 MSTORE POP PUSH2 0x5C04 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 0x273 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x80534934 GT PUSH2 0x151 JUMPI DUP1 PUSH4 0xC3666C36 GT PUSH2 0xC3 JUMPI DUP1 PUSH4 0xE8AB9CCC GT PUSH2 0x87 JUMPI DUP1 PUSH4 0xE8AB9CCC EQ PUSH2 0x106E JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x11CC JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x11FA JUMPI DUP1 PUSH4 0xF2472965 EQ PUSH2 0x12C3 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1374 JUMPI DUP1 PUSH4 0xF3993D11 EQ PUSH2 0x139A JUMPI PUSH2 0x273 JUMP JUMPDEST DUP1 PUSH4 0xC3666C36 EQ PUSH2 0xF01 JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0x100F JUMPI DUP1 PUSH4 0xC7778BAA EQ PUSH2 0x1017 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x1034 JUMPI DUP1 PUSH4 0xD0011D9D EQ PUSH2 0x1051 JUMPI PUSH2 0x273 JUMP JUMPDEST DUP1 PUSH4 0x98650275 GT PUSH2 0x115 JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0xDA7 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0xDAF JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0xDDD JUMPI DUP1 PUSH4 0xADEBF6F2 EQ PUSH2 0xE03 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0xE20 JUMPI DUP1 PUSH4 0xBD85B039 EQ PUSH2 0xEE4 JUMPI PUSH2 0x273 JUMP JUMPDEST DUP1 PUSH4 0x80534934 EQ PUSH2 0xBBB JUMPI DUP1 PUSH4 0x8832E6E3 EQ PUSH2 0xCEE JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xD71 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xD79 JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0xD81 JUMPI PUSH2 0x273 JUMP JUMPDEST DUP1 PUSH4 0x42842E0E GT PUSH2 0x1EA JUMPI DUP1 PUSH4 0x5B2BD79E GT PUSH2 0x1AE JUMPI DUP1 PUSH4 0x5B2BD79E EQ PUSH2 0x96A JUMPI DUP1 PUSH4 0x5CFA9297 EQ PUSH2 0x972 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x9FC JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xA19 JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0xA3F JUMPI DUP1 PUSH4 0x7E518EC8 EQ PUSH2 0xB4D JUMPI PUSH2 0x273 JUMP JUMPDEST DUP1 PUSH4 0x42842E0E EQ PUSH2 0x765 JUMPI DUP1 PUSH4 0x4684D7E9 EQ PUSH2 0x79B JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x819 JUMPI DUP1 PUSH4 0x510B5158 EQ PUSH2 0x927 JUMPI DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x944 JUMPI PUSH2 0x273 JUMP JUMPDEST DUP1 PUSH4 0xD6A5BBB GT PUSH2 0x23C JUMPI DUP1 PUSH4 0xD6A5BBB EQ PUSH2 0x3D5 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x4F3 JUMPI DUP1 PUSH4 0x124D91E5 EQ PUSH2 0x510 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x542 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x578 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x739 JUMPI PUSH2 0x273 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x278 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x2B6 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2F1 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x36E JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x3A7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x28E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1454 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x153A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2F9 PUSH2 0x1567 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 0x333 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x31B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x360 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 0x38B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x384 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x15FE 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 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x169B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x3EB 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 0x415 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x427 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 0x448 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 0x465 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x477 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 0x498 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 0x4B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4C7 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 0x4E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1871 JUMP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x509 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x192C JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x526 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 0x1937 JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x558 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 0x1A78 JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x58E 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 0x5C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5D3 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 0x5F4 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 0x643 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x655 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 0x676 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 0x6C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6D7 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 0x6F8 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 0x1A9A SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x74F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1AAE JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x77B 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 0x1AD9 JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x7B1 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 0x7DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7ED 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 0x80E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1AF6 JUMP JUMPDEST PUSH2 0x8D7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x82F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x849 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x85B 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 0x87C 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 0x899 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8AB 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 0x8CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1B3E 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 0x913 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8FB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x38B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x93D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1C32 JUMP JUMPDEST PUSH2 0x2DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x95A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1C3D JUMP JUMPDEST PUSH2 0x2F9 PUSH2 0x1CB6 JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x988 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 0x9BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x9D0 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 0x9F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1D44 JUMP JUMPDEST PUSH2 0x38B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1D91 JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D9C JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xA55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xA6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA81 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 0xAA2 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 0xABF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xAD1 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 0xAF2 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 0xB0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB21 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 0xB42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1E0F JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xB7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB8F 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 0xBB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1F01 JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xBD1 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 0xBFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC0D 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 0xC2E 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 0xC7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC8F 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 0xCB0 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 0x1F7D SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xD04 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 0xD33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD45 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 0xD66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2226 JUMP JUMPDEST PUSH2 0x38B PUSH2 0x227B JUMP JUMPDEST PUSH2 0x2F9 PUSH2 0x228A JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x22EB JUMP JUMPDEST PUSH2 0x3D3 PUSH2 0x2302 JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xDC5 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 0x2360 JUMP JUMPDEST PUSH2 0x2DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x236A JUMP JUMPDEST PUSH2 0x2DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x237F JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xE36 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 0xE70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xE82 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 0xEA3 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 0x238A SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2398 JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xF17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xF31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xF43 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 0xF64 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 0xF81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xF93 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 0xFB4 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 0xFD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xFE3 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 0x1004 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x240F JUMP JUMPDEST PUSH2 0x2F9 PUSH2 0x2557 JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x102D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2566 JUMP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x104A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2605 JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1067 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2678 JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1084 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x109E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x10B0 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 0x10D1 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 0x10EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1100 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 0x1121 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 0x113E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1150 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 0x1171 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 0x118E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x11A0 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 0x11C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x268C JUMP JUMPDEST PUSH2 0x2DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x11E2 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 0x26A7 JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x1210 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 0x124F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1261 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 0x1282 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 0x26BA SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x12D9 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 0x1303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1315 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 0x1336 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 0x282A SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x138A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A85 JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x13B0 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 0x13E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x13F5 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 0x1416 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 0x2ADE SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x14AB 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 0x496E76656E746F72793A207A65726F2061646472657373 PUSH1 0x48 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x14D5 DUP3 PUSH32 0x0 PUSH2 0x2DC1 JUMP JUMPDEST ISZERO PUSH2 0x150F 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 0x1502 JUMPI PUSH1 0x0 PUSH2 0x1505 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x1534 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 0x155F JUMPI POP PUSH2 0x155F DUP3 PUSH2 0x2DE7 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 0x15F3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x15C8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x15F3 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 0x15D6 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 0x1666 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 PUSH27 0x125B9D995B9D1BDC9E4E881B9BDB8B595E1A5CDD1A5B99C8139195 PUSH1 0x2A SHL 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 0x1691 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 0x1562 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x1562 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x16FA 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 PUSH27 0x125B9D995B9D1BDC9E4E881B9BDB8B595E1A5CDD1A5B99C8139195 PUSH1 0x2A SHL 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 0x1757 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 PUSH24 0x125B9D995B9D1BDC9E4E881CD95B198B585C1C1C9BDD985B PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1768 DUP2 PUSH2 0x1763 PUSH2 0x2E0C JUMP JUMPDEST PUSH2 0x2E16 JUMP JUMPDEST PUSH2 0x17A7 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B6F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x17E1 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP3 AND ISZERO PUSH2 0x17DC 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 0x182A JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP3 OR DUP1 DUP4 EQ PUSH2 0x1801 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1881 PUSH2 0x187C PUSH2 0x2E0C JUMP JUMPDEST PUSH2 0x2E62 JUMP JUMPDEST PUSH2 0x1923 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 0x2ECF SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x155F DUP3 PUSH2 0x3236 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1941 PUSH2 0x2E0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x194F DUP6 DUP4 PUSH2 0x2E16 JUMP JUMPDEST SWAP1 POP PUSH2 0x195A DUP5 PUSH2 0x3309 JUMP JUMPDEST ISZERO PUSH2 0x1970 JUMPI PUSH2 0x196B DUP6 DUP6 DUP6 DUP5 PUSH2 0x3313 JUMP JUMPDEST PUSH2 0x1A25 JUMP JUMPDEST PUSH2 0x199A DUP5 PUSH32 0x0 PUSH2 0x2DC1 JUMP JUMPDEST ISZERO PUSH2 0x19D8 JUMPI PUSH2 0x19AD DUP6 DUP6 DUP6 DUP5 PUSH1 0x0 PUSH2 0x3455 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 0x5BAF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP4 SWAP1 LOG4 PUSH2 0x1A25 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x1A95 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x3609 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1AA7 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x3751 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1AB9 PUSH2 0x187C PUSH2 0x2E0C JUMP JUMPDEST PUSH2 0x1AD5 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x3A75 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x1A95 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x1 PUSH2 0x3609 JUMP JUMPDEST PUSH2 0x1B01 PUSH2 0x187C PUSH2 0x2E0C JUMP JUMPDEST PUSH2 0x1A95 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 0x3C08 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 DUP3 EQ PUSH2 0x1B82 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B8F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x1B9B 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 0x1BC5 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 0x1C28 JUMPI PUSH2 0x1C09 DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x1BE1 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 0x1BFD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x1454 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1C15 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1BCB JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x155F DUP3 PUSH2 0x3F78 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 0x155F 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 0x1D3C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1D11 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1D3C 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 0x1D1F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH2 0x1D4F PUSH2 0x187C PUSH2 0x2E0C JUMP JUMPDEST PUSH2 0x1AA7 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 0x4012 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x155F DUP3 PUSH2 0x4154 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1DF3 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 0x496E76656E746F72793A207A65726F2061646472657373 PUSH1 0x48 SHL 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 0x1E1F PUSH2 0x1E1A PUSH2 0x2E0C JUMP JUMPDEST PUSH2 0x41BC JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1E2E JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1E7F 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 0x1EF7 JUMPI PUSH2 0x1EEF DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x1E98 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 0x1EB4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x1EC7 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 0x4280 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1E82 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1F0C PUSH2 0x1E1A PUSH2 0x2E0C JUMP JUMPDEST PUSH2 0x1F18 PUSH1 0xA DUP4 DUP4 PUSH2 0x5A65 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 0x1FC2 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B8F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1FCC PUSH2 0x2E0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1FDA DUP7 DUP4 PUSH2 0x2E16 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP7 DUP2 EQ PUSH2 0x211D JUMPI PUSH1 0x0 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1FF8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x200B DUP2 PUSH2 0x3309 JUMP JUMPDEST ISZERO PUSH2 0x2034 JUMPI PUSH2 0x202F DUP12 DUP3 DUP12 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x2021 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 PUSH2 0x3313 JUMP JUMPDEST PUSH2 0x2114 JUMP JUMPDEST PUSH2 0x205E DUP2 PUSH32 0x0 PUSH2 0x2DC1 JUMP JUMPDEST ISZERO PUSH2 0x19D8 JUMPI PUSH2 0x2084 DUP12 DUP3 DUP12 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x2074 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 PUSH1 0x1 PUSH2 0x3455 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 0x5BAF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP4 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x20D6 DUP3 PUSH32 0x0 PUSH2 0x42D2 JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x20E9 JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x2112 JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x210B JUMPI PUSH2 0x20FB DUP13 DUP8 DUP8 PUSH2 0x42E8 JUMP JUMPDEST SWAP5 POP PUSH1 0x1 SWAP4 SWAP3 SWAP1 SWAP3 ADD SWAP2 DUP5 PUSH2 0x2112 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1FE3 JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x2153 JUMPI PUSH2 0x212F DUP10 DUP5 DUP5 PUSH2 0x42E8 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x21C7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x21AF 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 0x2206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x21EE 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 0x2231 PUSH2 0x187C PUSH2 0x2E0C JUMP JUMPDEST PUSH2 0x2275 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 0x3A75 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 0x15F3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x15C8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x15F3 JUMP JUMPDEST PUSH2 0x22F6 PUSH2 0x1E1A PUSH2 0x2E0C JUMP JUMPDEST PUSH2 0x22FF DUP2 PUSH2 0x4328 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x230C PUSH2 0x2E0C JUMP JUMPDEST SWAP1 POP PUSH2 0x2317 DUP2 PUSH2 0x2E62 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 0x1AD5 DUP3 DUP3 PUSH2 0x4374 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 0x155F DUP3 PUSH2 0x3309 JUMP JUMPDEST PUSH2 0x2275 DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x3609 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x23C4 DUP3 PUSH32 0x0 PUSH2 0x2DC1 JUMP JUMPDEST ISZERO PUSH2 0x23FA 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 0x23ED JUMPI PUSH1 0x1 PUSH2 0x23F0 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x1562 JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1562 JUMP JUMPDEST PUSH2 0x241A PUSH2 0x1E1A PUSH2 0x2E0C JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x2429 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x247A 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 0x1EF7 JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x2490 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 0x24BB 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 0x24D7 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 0x2534 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2548 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x247D JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2561 PUSH2 0x4450 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2592 DUP3 PUSH32 0x0 PUSH2 0x2DC1 JUMP JUMPDEST PUSH2 0x25DB 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 0x155F DUP3 PUSH32 0x0 PUSH2 0x42D2 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 0x266F 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 PUSH27 0x125B9D995B9D1BDC9E4E881B9BDB8B595E1A5CDD1A5B99C8139195 PUSH1 0x2A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x155F DUP3 PUSH2 0x192C JUMP JUMPDEST PUSH2 0x2683 PUSH2 0x1E1A PUSH2 0x2E0C JUMP JUMPDEST PUSH2 0x22FF DUP2 PUSH2 0x4494 JUMP JUMPDEST PUSH2 0x2697 PUSH2 0x187C PUSH2 0x2E0C JUMP JUMPDEST PUSH2 0x1EF7 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x45E9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26B3 DUP4 DUP4 PUSH2 0x490E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26C4 PUSH2 0x2E0C JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x271F 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 PUSH27 0x496E76656E746F72793A207472616E7366657220746F207A65726F PUSH1 0x28 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x272B DUP8 DUP4 PUSH2 0x2E16 JUMP JUMPDEST SWAP1 POP PUSH2 0x2736 DUP6 PUSH2 0x3309 JUMP JUMPDEST ISZERO PUSH2 0x274D JUMPI PUSH2 0x2748 DUP8 DUP8 DUP8 DUP8 DUP6 PUSH2 0x493C JUMP JUMPDEST PUSH2 0x27BB JUMP JUMPDEST PUSH2 0x2777 DUP6 PUSH32 0x0 PUSH2 0x2DC1 JUMP JUMPDEST ISZERO PUSH2 0x19D8 JUMPI PUSH2 0x278B DUP8 DUP8 DUP8 DUP8 DUP6 PUSH1 0x0 PUSH2 0x4A95 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 0x5BAF 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x2818 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4C31 JUMP JUMPDEST ISZERO PUSH2 0x1923 JUMPI PUSH2 0x1923 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x4C37 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2834 PUSH2 0x2E0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2842 DUP5 DUP4 PUSH2 0x2E16 JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2860 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 0x288A 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 0x2981 JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x28A8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x1 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x28C0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x28ED DUP11 DUP3 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x28DD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP11 PUSH1 0x1 PUSH2 0x3455 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 0x5BAF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP4 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x293F DUP3 PUSH32 0x0 PUSH2 0x42D2 JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x2952 JUMPI DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x2977 JUMP JUMPDEST DUP5 DUP2 EQ PUSH2 0x2970 JUMPI PUSH2 0x2964 DUP12 DUP7 DUP7 PUSH2 0x42E8 JUMP JUMPDEST DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x2977 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x2893 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x29B3 JUMPI PUSH2 0x2993 DUP9 DUP4 DUP4 PUSH2 0x42E8 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x2A27 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2A0F 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 0x2A66 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2A4E 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 0x2A90 PUSH2 0x1E1A PUSH2 0x2E0C JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x2B37 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 PUSH27 0x496E76656E746F72793A207472616E7366657220746F207A65726F PUSH1 0x28 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B41 PUSH2 0x2E0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2B4F DUP6 DUP4 PUSH2 0x2E16 JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2B6D 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 0x2B97 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 0x2C87 JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2BB5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x1 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2BCD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x2BE9 DUP12 DUP12 DUP4 PUSH1 0x1 DUP12 PUSH1 0x1 PUSH2 0x4A95 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 0x5BAF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x0 PUSH2 0x2C44 DUP3 PUSH32 0x0 PUSH2 0x42D2 JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x2C57 JUMPI DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x2C7D JUMP JUMPDEST DUP5 DUP2 EQ PUSH2 0x2C76 JUMPI PUSH2 0x2C6A DUP13 DUP13 DUP8 DUP8 PUSH2 0x4DA8 JUMP JUMPDEST DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x2C7D JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x2BA0 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x2CA5 JUMPI PUSH2 0x2C9A DUP10 DUP10 DUP5 DUP5 PUSH2 0x4DA8 JUMP JUMPDEST PUSH2 0x2CA5 DUP10 DUP10 DUP7 PUSH2 0x4DFC JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2CC1 PUSH2 0x2E0C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x2D1F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2D07 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 0x2D5E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2D46 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2D85 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4C31 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2D95 JUMPI POP PUSH2 0x2D95 DUP9 PUSH2 0x4E47 JUMP JUMPDEST ISZERO PUSH2 0x2DB6 JUMPI PUSH2 0x2DB6 DUP10 DUP10 DUP10 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x4EC8 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 0x26B3 JUMPI POP PUSH2 0x2DDC DUP3 PUSH2 0x502D 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 0x155F JUMPI POP PUSH2 0x155F DUP3 PUSH2 0x503E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2561 PUSH2 0x5099 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 0x26B3 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 0x22FF 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 0x2F24 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 0x2F69 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B8F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x30F6 JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2F85 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2F9D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x2FB0 DUP3 PUSH2 0x3309 JUMP JUMPDEST ISZERO PUSH2 0x2FC5 JUMPI PUSH2 0x2FC0 DUP12 DUP4 DUP4 PUSH2 0x51F9 JUMP JUMPDEST PUSH2 0x30EC JUMP JUMPDEST PUSH2 0x2FEF DUP3 PUSH32 0x0 PUSH2 0x2DC1 JUMP JUMPDEST ISZERO PUSH2 0x19D8 JUMPI PUSH2 0x3001 DUP12 DUP4 DUP4 PUSH1 0x1 PUSH2 0x52E3 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 0x5BAF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x3053 DUP4 PUSH32 0x0 PUSH2 0x42D2 JUMP JUMPDEST SWAP1 POP DUP7 PUSH2 0x3066 JUMPI DUP1 SWAP7 POP PUSH1 0x1 SWAP6 POP PUSH2 0x30EA JUMP JUMPDEST DUP7 DUP2 EQ PUSH2 0x30E3 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 0x30EA JUMP JUMPDEST DUP6 PUSH1 0x1 ADD SWAP6 POP JUMPDEST POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x2F70 JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x314B 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 0x315F PUSH2 0x2E0C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x31BD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x31A5 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 0x31FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x31E4 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x3223 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4C31 JUMP JUMPDEST ISZERO PUSH2 0x1EF7 JUMPI PUSH2 0x1EF7 PUSH1 0x0 DUP10 DUP10 DUP10 DUP10 PUSH2 0x4EC8 JUMP JUMPDEST PUSH1 0x60 PUSH1 0xA PUSH2 0x3243 DUP4 PUSH2 0x5430 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 0x32A1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x327F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x32A1 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 0x328D JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x32CD JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x32AE 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 0x335D 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 0x339D 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B6F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x3415 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 0x34A7 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 PUSH26 0x496E76656E746F72793A2077726F6E67204E46542076616C7565 PUSH1 0x30 SHL 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 0x3511 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 PUSH24 0x125B9D995B9D1BDC9E4E881B9BDB8B5BDDDB995908139195 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x3590 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3551 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 0x3546 PUSH2 0x2E0C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x3590 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B6F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x3601 JUMPI PUSH2 0x35E0 DUP7 PUSH2 0x35D9 DUP8 PUSH32 0x0 PUSH2 0x42D2 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x42E8 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 0x3662 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 PUSH27 0x496E76656E746F72793A207472616E7366657220746F207A65726F PUSH1 0x28 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x366C PUSH2 0x2E0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x367A DUP8 DUP4 PUSH2 0x2E16 JUMP JUMPDEST SWAP1 POP PUSH2 0x368C DUP8 DUP8 DUP8 PUSH1 0x1 DUP6 PUSH1 0x0 PUSH2 0x4A95 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 0x5BAF 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x3719 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4C31 JUMP JUMPDEST ISZERO PUSH2 0x1923 JUMPI PUSH2 0x3727 DUP7 PUSH2 0x4E47 JUMP JUMPDEST ISZERO PUSH2 0x373F JUMPI PUSH2 0x373A DUP8 DUP8 DUP8 PUSH1 0x1 DUP9 PUSH2 0x4C37 JUMP JUMPDEST PUSH2 0x1923 JUMP JUMPDEST DUP3 ISZERO PUSH2 0x1923 JUMPI PUSH2 0x1923 DUP8 DUP8 DUP8 DUP8 PUSH2 0x550B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x37AA 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 PUSH27 0x496E76656E746F72793A207472616E7366657220746F207A65726F PUSH1 0x28 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 0x37EF 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B8F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x37F9 PUSH2 0x2E0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3807 DUP9 DUP4 PUSH2 0x2E16 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP7 DUP2 EQ PUSH2 0x3956 JUMPI PUSH1 0x0 DUP11 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3825 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x3838 DUP2 PUSH2 0x3309 JUMP JUMPDEST ISZERO PUSH2 0x3862 JUMPI PUSH2 0x385D DUP14 DUP14 DUP4 DUP14 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x384F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP11 PUSH2 0x493C JUMP JUMPDEST PUSH2 0x394D JUMP JUMPDEST PUSH2 0x388C DUP2 PUSH32 0x0 PUSH2 0x2DC1 JUMP JUMPDEST ISZERO PUSH2 0x19D8 JUMPI PUSH2 0x38B3 DUP14 DUP14 DUP4 DUP14 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x38A3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP11 PUSH1 0x1 PUSH2 0x4A95 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 0x5BAF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x0 PUSH2 0x390E DUP3 PUSH32 0x0 PUSH2 0x42D2 JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x3921 JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x394B JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x3944 JUMPI PUSH2 0x3934 DUP15 DUP15 DUP9 DUP9 PUSH2 0x4DA8 JUMP JUMPDEST SWAP5 POP PUSH1 0x1 SWAP4 SWAP3 SWAP1 SWAP3 ADD SWAP2 DUP5 PUSH2 0x394B JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x3810 JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x3976 JUMPI PUSH2 0x3969 DUP12 DUP12 DUP6 DUP6 PUSH2 0x4DA8 JUMP JUMPDEST DUP2 ADD PUSH2 0x3976 DUP12 DUP12 DUP4 PUSH2 0x4DFC JUMP JUMPDEST DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3992 PUSH2 0x2E0C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x39F0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x39D8 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 0x3A2F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3A17 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x3A56 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4C31 JUMP JUMPDEST ISZERO PUSH2 0x3A68 JUMPI PUSH2 0x3A68 DUP12 DUP12 DUP12 DUP12 DUP12 PUSH2 0x4EC8 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 0x3ACA 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 0x3AF4 DUP4 PUSH32 0x0 PUSH2 0x2DC1 JUMP JUMPDEST PUSH2 0x3B3D 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 0x3B4B DUP5 DUP5 PUSH1 0x1 PUSH1 0x0 PUSH2 0x52E3 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 0x5BAF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 PUSH2 0x3B85 PUSH2 0x2E0C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x3BCE DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4C31 JUMP JUMPDEST ISZERO PUSH2 0x2275 JUMPI PUSH2 0x3BDC DUP5 PUSH2 0x4E47 JUMP JUMPDEST ISZERO PUSH2 0x3BF5 JUMPI PUSH2 0x3BF0 PUSH1 0x0 DUP6 DUP6 PUSH1 0x1 DUP7 PUSH2 0x4C37 JUMP JUMPDEST PUSH2 0x2275 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2275 JUMPI PUSH2 0x2275 PUSH1 0x0 DUP6 DUP6 DUP6 PUSH2 0x550B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3C5D 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 0x3C78 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 0x3CA2 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 0x3E2E JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3CC0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x3CFD PUSH32 0x0 DUP3 PUSH2 0x2DC1 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x3D46 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 0x3D54 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x3D6D DUP9 DUP3 PUSH1 0x1 DUP1 PUSH2 0x52E3 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 0x5BAF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x3DBF DUP3 PUSH32 0x0 PUSH2 0x42D2 JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x3DD2 JUMPI DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x3E24 JUMP JUMPDEST DUP5 DUP2 EQ PUSH2 0x3E1D 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 0x3E24 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x3CAB 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 0x3E82 PUSH2 0x2E0C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x3EE0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3EC8 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 0x3F1F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3F07 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x3F46 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4C31 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3F56 JUMPI POP PUSH2 0x3F56 DUP7 PUSH2 0x4E47 JUMP JUMPDEST ISZERO PUSH2 0x3601 JUMPI PUSH2 0x3601 PUSH1 0x0 DUP8 DUP8 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x4EC8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FA4 DUP3 PUSH32 0x0 PUSH2 0x2DC1 JUMP JUMPDEST ISZERO PUSH2 0x3FF6 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 0x4067 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 0x4071 PUSH2 0x2E0C JUMP JUMPDEST SWAP1 POP PUSH2 0x407C DUP5 PUSH2 0x3309 JUMP JUMPDEST ISZERO PUSH2 0x4091 JUMPI PUSH2 0x408C DUP6 DUP6 DUP6 PUSH2 0x51F9 JUMP JUMPDEST PUSH2 0x40F4 JUMP JUMPDEST PUSH2 0x40BB DUP5 PUSH32 0x0 PUSH2 0x2DC1 JUMP JUMPDEST ISZERO PUSH2 0x19D8 JUMPI PUSH2 0x40CD DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x52E3 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 0x5BAF 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x4141 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4C31 JUMP JUMPDEST ISZERO PUSH2 0x1AA7 JUMPI PUSH2 0x1AA7 PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 PUSH2 0x4C37 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 0x155F 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 PUSH27 0x125B9D995B9D1BDC9E4E881B9BDB8B595E1A5CDD1A5B99C8139195 PUSH1 0x2A SHL 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 0x41F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4209 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 0x421F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x22FF 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x1A95 SWAP1 DUP5 SWAP1 PUSH2 0x5674 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42DD DUP3 PUSH2 0x502D 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 0x437E PUSH2 0x2E0C 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 0x43E2 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 PUSH24 0x125B9D995B9D1BDC9E4E881CD95B198B585C1C1C9BDD985B PUSH1 0x42 SHL 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 0x445A PUSH2 0x5857 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 0x44BE DUP2 PUSH32 0x0 PUSH2 0x2DC1 JUMP JUMPDEST ISZERO PUSH2 0x4510 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 0x457A 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 0x4582 PUSH2 0x2E0C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x45B7 DUP2 PUSH2 0x3309 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 0x45F8 JUMPI POP DUP1 DUP5 EQ JUMPDEST PUSH2 0x4637 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B8F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4641 PUSH2 0x2E0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 EQ PUSH2 0x3A68 JUMPI PUSH1 0x0 DUP12 DUP12 DUP4 DUP2 DUP2 LT PUSH2 0x465B 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 0x46CF 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 0x46DD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP PUSH1 0x0 DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x46F4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP PUSH2 0x4706 DUP3 PUSH2 0x3309 JUMP JUMPDEST ISZERO PUSH2 0x47B1 JUMPI PUSH2 0x4716 DUP4 DUP4 DUP4 PUSH2 0x51F9 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x4763 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4C31 JUMP JUMPDEST ISZERO PUSH2 0x47AC JUMPI PUSH2 0x47AC 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 0x4C37 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x4900 JUMP JUMPDEST PUSH2 0x47DB DUP3 PUSH32 0x0 PUSH2 0x2DC1 JUMP JUMPDEST ISZERO PUSH2 0x19D8 JUMPI PUSH2 0x47ED DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x52E3 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 0x5BAF 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x4860 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4C31 JUMP JUMPDEST ISZERO PUSH2 0x47AC JUMPI PUSH2 0x486E DUP4 PUSH2 0x4E47 JUMP JUMPDEST ISZERO PUSH2 0x48BD JUMPI PUSH2 0x48B8 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 0x4C37 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x47AC JUMP JUMPDEST PUSH2 0x47AC 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 0x550B SWAP3 POP POP POP JUMP JUMPDEST POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x4646 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 0x497C 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B6F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x49C6 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 0x4A3E 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 0x3601 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 0x4AE7 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 PUSH26 0x496E76656E746F72793A2077726F6E67204E46542076616C7565 PUSH1 0x30 SHL 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 0x4B51 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 PUSH24 0x125B9D995B9D1BDC9E4E881B9BDB8B5BDDDB995908139195 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x4BD0 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x4B91 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 0x4B86 PUSH2 0x2E0C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x4BD0 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B6F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x1923 JUMPI PUSH2 0x4BFB DUP8 DUP8 PUSH1 0x1 PUSH2 0x4DFC JUMP JUMPDEST PUSH2 0x1923 DUP8 DUP8 PUSH2 0x4C2A DUP9 PUSH32 0x0 PUSH2 0x42D2 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x4DA8 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 0x4C56 PUSH2 0x2E0C 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 0x4CD0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4CB8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4CFD 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 0x4D20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4D34 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 0x4D4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1AA7 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 0x2275 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 0x1A95 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB 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 0x4EB5 JUMPI INVALID JUMPDEST DUP3 DUP1 ISZERO PUSH2 0x4EBF 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 0x4EE7 PUSH2 0x2E0C 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 0x4F60 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4F48 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 0x4F9F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4F87 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 0x4FDB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4FC3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x5008 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 0x4D20 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 0x506F JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x508A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0xF3993D11 PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x155F JUMPI POP PUSH2 0x155F DUP3 PUSH2 0x59BA JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x50A5 PUSH2 0x5A3E 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 0x5118 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 0x5126 JUMPI SWAP2 POP PUSH2 0x15FB SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x51E5 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 0x51B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x51CC 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 0x51E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x51F3 JUMPI SWAP2 POP PUSH2 0x15FB SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x5243 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 0x52A9 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 0x5335 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 PUSH26 0x496E76656E746F72793A2077726F6E67204E46542076616C7565 PUSH1 0x30 SHL 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 0x5396 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 0x2275 JUMPI PUSH1 0x0 PUSH2 0x53E1 DUP5 PUSH32 0x0 PUSH2 0x42D2 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 0x5455 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 0x1562 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x546D JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0x5459 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x5486 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 0x54B1 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 0x5502 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 0x54E0 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x54BD 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 0x552A PUSH2 0x2E0C 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 0x559D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5585 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x55CA 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 0x55EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5600 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 0x5616 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x2275 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 0x5687 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x4C31 JUMP JUMPDEST PUSH2 0x56D8 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 0x5715 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x56F6 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 0x5777 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 0x577C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x57FB JUMPI DUP1 MLOAD ISZERO PUSH2 0x57F6 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x57A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x57F6 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 0x1AA7 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x584E 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 0x58C3 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 0x58DA JUMPI PUSH2 0x58D0 PUSH2 0x5A4A JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x59B6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x59A0 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x5925 PUSH2 0x5A3E 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 0x5973 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5987 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 0x599D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x59AD JUMPI PUSH2 0x58D0 PUSH2 0x5A4A 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 0x59EB JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x6CDB3D13 PUSH1 0xE1 SHL EQ JUMPDEST DUP1 PUSH2 0x5A06 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x3A24D07 PUSH1 0xE2 SHL EQ JUMPDEST DUP1 PUSH2 0x5A21 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x4E72E23 PUSH1 0xE1 SHL EQ JUMPDEST DUP1 PUSH2 0x155F 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 0x5A5D PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x5B06 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 0x5A9B JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x5AE1 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x5AB4 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x5AE1 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x5AE1 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5AE1 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5AC6 JUMP JUMPDEST POP PUSH2 0x5AED SWAP3 SWAP2 POP PUSH2 0x5AF1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x5AED JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5AF2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x5B15 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x5B21 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID 0x4A CODECOPY 0xDC MOD 0xD4 0xC0 0xDB 0xC6 0x4B PUSH17 0xAF90FD698A233A518AA5D07E595D983B8C SDIV 0x26 0xC8 0xF7 0xFB 0xC3 0xD5 DUP2 PUSH9 0xC5AE7397731D063D5B 0xBF RETURNDATASIZE PUSH6 0x7854427343F4 0xC0 DUP4 0x24 0xF PUSH27 0xACAA2D0F62496E76656E746F72793A206E6F6E2D617070726F7665 PUSH5 0x2073656E64 PUSH6 0x720000496E76 PUSH6 0x6E746F72793A KECCAK256 PUSH10 0x6E636F6E73697374656E PUSH21 0x206172726179730000DDF252AD1BE2C89B69C2B068 0xFC CALLDATACOPY DUP14 0xAA SWAP6 0x2B 0xA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x49 CALLER 0xB3 CALLVALUE 0xC1 SWAP16 0xB0 0xC2 DUP6 0xB9 CALLDATALOAD 0x4E EXP PUSH31 0xB102B3C322E6349F8B8B0ADEA5A4B3E7134364736F6C634300070600330000 ",
              "sourceMap": "1397:5159:26:-:0;;;1667:348;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1667:348:26;;;;;;;;;;;;817:176:21;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;817:176:21;;;;;;;-1:-1:-1;960:15:2;;-1:-1:-1;;;;;;960:15:2;1997:10:26;960:15:2;;;;;990:40;;1667:348:26;;;;;;817:176:21;;1667:348:26;;817:176:21;;;;1667:348:26;;;;;;;;1997:10;;;;-1:-1:-1;990:40:2;;-1:-1:-1;;990:40:2;-1:-1:-1;;;;;;;443:40:35;;;;;;;;493:38;;;;;;2448:25:11;;;;;:55;;;2500:3;2477:20;:26;2448:55;2440:96;;;;;-1:-1:-1;;;2440:96:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;2546:44;;1973:13:20;;::::1;::::0;:5:::1;::::0;:13:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;1996:17:20;;::::1;::::0;:7:::1;::::0;:17:::1;::::0;::::1;::::0;::::1;:::i;:::-;;1804:216:::0;;;817:176:21;;;476:18:1::1;487:6;476:10;;;:18;;:::i;:::-;422:79:::0;1667:348:26;;;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:26:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1397:5159:26;;;-1:-1:-1;1397:5159:26;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:379:36",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:36",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "144:233:36",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "182:32:36",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "191:9:36"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "202:9:36"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "184:6:36"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "184:28:36"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "184:28:36"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "160:10:36"
                                  },
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "172:8:36"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "157:2:36"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "157:24:36"
                              },
                              "nodeType": "YulIf",
                              "src": "154:2:36"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "247:32:36",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "256:9:36"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "267:9:36"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "249:6:36"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "249:28:36"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "249:28:36"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "229:8:36"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "239:6:36"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "226:2:36"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "226:20:36"
                              },
                              "nodeType": "YulIf",
                              "src": "223:2:36"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "288:36:36",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "305:6:36"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "313:10:36"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "301:3:36"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "301:23:36"
                              },
                              "variableNames": [
                                {
                                  "name": "offsetOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "288:9:36"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "333:38:36",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "350:8:36"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "360:10:36"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "346:3:36"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "346:25:36"
                              },
                              "variableNames": [
                                {
                                  "name": "lengthOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "333:9:36"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "calldata_array_index_range_access_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "78:6:36",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "86:6:36",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "94:10:36",
                            "type": ""
                          },
                          {
                            "name": "endIndex",
                            "nodeType": "YulTypedName",
                            "src": "106:8:36",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "offsetOut",
                            "nodeType": "YulTypedName",
                            "src": "119:9:36",
                            "type": ""
                          },
                          {
                            "name": "lengthOut",
                            "nodeType": "YulTypedName",
                            "src": "130:9:36",
                            "type": ""
                          }
                        ],
                        "src": "14:363:36"
                      }
                    ]
                  },
                  "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": 36,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "854": [
                  {
                    "length": 32,
                    "start": 5297
                  },
                  {
                    "length": 32,
                    "start": 6518
                  },
                  {
                    "length": 32,
                    "start": 8250
                  },
                  {
                    "length": 32,
                    "start": 8370
                  },
                  {
                    "length": 32,
                    "start": 9120
                  },
                  {
                    "length": 32,
                    "start": 9582
                  },
                  {
                    "length": 32,
                    "start": 9697
                  },
                  {
                    "length": 32,
                    "start": 10067
                  },
                  {
                    "length": 32,
                    "start": 10523
                  },
                  {
                    "length": 32,
                    "start": 11296
                  },
                  {
                    "length": 32,
                    "start": 12235
                  },
                  {
                    "length": 32,
                    "start": 12335
                  },
                  {
                    "length": 32,
                    "start": 13749
                  },
                  {
                    "length": 32,
                    "start": 14440
                  },
                  {
                    "length": 32,
                    "start": 14570
                  },
                  {
                    "length": 32,
                    "start": 15056
                  },
                  {
                    "length": 32,
                    "start": 15567
                  },
                  {
                    "length": 32,
                    "start": 15771
                  },
                  {
                    "length": 32,
                    "start": 16256
                  },
                  {
                    "length": 32,
                    "start": 16535
                  },
                  {
                    "length": 32,
                    "start": 17562
                  },
                  {
                    "length": 32,
                    "start": 18359
                  },
                  {
                    "length": 32,
                    "start": 19462
                  },
                  {
                    "length": 32,
                    "start": 21437
                  }
                ],
                "5800": [
                  {
                    "length": 32,
                    "start": 7292
                  },
                  {
                    "length": 32,
                    "start": 20649
                  },
                  {
                    "length": 32,
                    "start": 20796
                  },
                  {
                    "length": 32,
                    "start": 22629
                  },
                  {
                    "length": 32,
                    "start": 22768
                  }
                ],
                "5802": [
                  {
                    "length": 32,
                    "start": 7233
                  },
                  {
                    "length": 32,
                    "start": 20708
                  },
                  {
                    "length": 32,
                    "start": 22671
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106102735760003560e01c80638053493411610151578063c3666c36116100c3578063e8ab9ccc11610087578063e8ab9ccc1461106e578063e985e9c5146111cc578063f242432a146111fa578063f2472965146112c3578063f2fde38b14611374578063f3993d111461139a57610273565b8063c3666c3614610f01578063c4c2bfdc1461100f578063c7778baa14611017578063c87b56dd14611034578063d0011d9d1461105157610273565b806398650275116101155780639865027514610da7578063a22cb46514610daf578063aa271e1a14610ddd578063adebf6f214610e03578063b88d4fde14610e20578063bd85b03914610ee457610273565b80638053493414610bbb5780638832e6e314610cee5780638da5cb5b14610d7157806395d89b4114610d79578063983b2d5614610d8157610273565b806342842e0e116101ea5780635b2bd79e116101ae5780635b2bd79e1461096a5780635cfa9297146109725780636352211e146109fc57806370a0823114610a1957806373c8a95814610a3f5780637e518ec814610b4d57610273565b806342842e0e146107655780634684d7e91461079b5780634e1273f414610819578063510b515814610927578063572b6c051461094457610273565b80630d6a5bbb1161023c5780630d6a5bbb146103d55780630e89341c146104f3578063124d91e51461051057806323b872dd146105425780632eb2c2d61461057857806340c10f191461073957610273565b8062fdd58e1461027857806301ffc9a7146102b657806306fdde03146102f1578063081812fc1461036e578063095ea7b3146103a7575b600080fd5b6102a46004803603604081101561028e57600080fd5b506001600160a01b038135169060200135611454565b60408051918252519081900360200190f35b6102dd600480360360208110156102cc57600080fd5b50356001600160e01b03191661153a565b604080519115158252519081900360200190f35b6102f9611567565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561033357818101518382015260200161031b565b50505050905090810190601f1680156103605780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61038b6004803603602081101561038457600080fd5b50356115fe565b604080516001600160a01b039092168252519081900360200190f35b6103d3600480360360408110156103bd57600080fd5b506001600160a01b03813516906020013561169b565b005b6103d3600480360360808110156103eb57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561041557600080fd5b82018360208201111561042757600080fd5b803590602001918460208302840111600160201b8311171561044857600080fd5b919390929091602081019035600160201b81111561046557600080fd5b82018360208201111561047757600080fd5b803590602001918460208302840111600160201b8311171561049857600080fd5b919390929091602081019035600160201b8111156104b557600080fd5b8201836020820111156104c757600080fd5b803590602001918460018302840111600160201b831117156104e857600080fd5b509092509050611871565b6102f96004803603602081101561050957600080fd5b503561192c565b6103d36004803603606081101561052657600080fd5b506001600160a01b038135169060208101359060400135611937565b6103d36004803603606081101561055857600080fd5b506001600160a01b03813581169160208101359091169060400135611a78565b6103d3600480360360a081101561058e57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156105c157600080fd5b8201836020820111156105d357600080fd5b803590602001918460208302840111600160201b831117156105f457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561064357600080fd5b82018360208201111561065557600080fd5b803590602001918460208302840111600160201b8311171561067657600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156106c557600080fd5b8201836020820111156106d757600080fd5b803590602001918460018302840111600160201b831117156106f857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611a9a945050505050565b6103d36004803603604081101561074f57600080fd5b506001600160a01b038135169060200135611aae565b6103d36004803603606081101561077b57600080fd5b506001600160a01b03813581169160208101359091169060400135611ad9565b6103d3600480360360408110156107b157600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156107db57600080fd5b8201836020820111156107ed57600080fd5b803590602001918460208302840111600160201b8311171561080e57600080fd5b509092509050611af6565b6108d76004803603604081101561082f57600080fd5b810190602081018135600160201b81111561084957600080fd5b82018360208201111561085b57600080fd5b803590602001918460208302840111600160201b8311171561087c57600080fd5b919390929091602081019035600160201b81111561089957600080fd5b8201836020820111156108ab57600080fd5b803590602001918460208302840111600160201b831117156108cc57600080fd5b509092509050611b3e565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156109135781810151838201526020016108fb565b505050509050019250505060405180910390f35b61038b6004803603602081101561093d57600080fd5b5035611c32565b6102dd6004803603602081101561095a57600080fd5b50356001600160a01b0316611c3d565b6102f9611cb6565b6103d36004803603608081101561098857600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b8111156109be57600080fd5b8201836020820111156109d057600080fd5b803590602001918460018302840111600160201b831117156109f157600080fd5b509092509050611d44565b61038b60048036036020811015610a1257600080fd5b5035611d91565b6102a460048036036020811015610a2f57600080fd5b50356001600160a01b0316611d9c565b6103d360048036036060811015610a5557600080fd5b810190602081018135600160201b811115610a6f57600080fd5b820183602082011115610a8157600080fd5b803590602001918460208302840111600160201b83111715610aa257600080fd5b919390929091602081019035600160201b811115610abf57600080fd5b820183602082011115610ad157600080fd5b803590602001918460208302840111600160201b83111715610af257600080fd5b919390929091602081019035600160201b811115610b0f57600080fd5b820183602082011115610b2157600080fd5b803590602001918460208302840111600160201b83111715610b4257600080fd5b509092509050611e0f565b6103d360048036036020811015610b6357600080fd5b810190602081018135600160201b811115610b7d57600080fd5b820183602082011115610b8f57600080fd5b803590602001918460018302840111600160201b83111715610bb057600080fd5b509092509050611f01565b6103d360048036036060811015610bd157600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610bfb57600080fd5b820183602082011115610c0d57600080fd5b803590602001918460208302840111600160201b83111715610c2e57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b811115610c7d57600080fd5b820183602082011115610c8f57600080fd5b803590602001918460208302840111600160201b83111715610cb057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611f7d945050505050565b6103d360048036036060811015610d0457600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b811115610d3357600080fd5b820183602082011115610d4557600080fd5b803590602001918460018302840111600160201b83111715610d6657600080fd5b509092509050612226565b61038b61227b565b6102f961228a565b6103d360048036036020811015610d9757600080fd5b50356001600160a01b03166122eb565b6103d3612302565b6103d360048036036040811015610dc557600080fd5b506001600160a01b0381351690602001351515612360565b6102dd60048036036020811015610df357600080fd5b50356001600160a01b031661236a565b6102dd60048036036020811015610e1957600080fd5b503561237f565b6103d360048036036080811015610e3657600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b811115610e7057600080fd5b820183602082011115610e8257600080fd5b803590602001918460018302840111600160201b83111715610ea357600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061238a945050505050565b6102a460048036036020811015610efa57600080fd5b5035612398565b6103d360048036036060811015610f1757600080fd5b810190602081018135600160201b811115610f3157600080fd5b820183602082011115610f4357600080fd5b803590602001918460208302840111600160201b83111715610f6457600080fd5b919390929091602081019035600160201b811115610f8157600080fd5b820183602082011115610f9357600080fd5b803590602001918460208302840111600160201b83111715610fb457600080fd5b919390929091602081019035600160201b811115610fd157600080fd5b820183602082011115610fe357600080fd5b803590602001918460208302840111600160201b8311171561100457600080fd5b50909250905061240f565b6102f9612557565b6102a46004803603602081101561102d57600080fd5b5035612566565b6102f96004803603602081101561104a57600080fd5b5035612605565b6103d36004803603602081101561106757600080fd5b5035612678565b6103d36004803603608081101561108457600080fd5b810190602081018135600160201b81111561109e57600080fd5b8201836020820111156110b057600080fd5b803590602001918460208302840111600160201b831117156110d157600080fd5b919390929091602081019035600160201b8111156110ee57600080fd5b82018360208201111561110057600080fd5b803590602001918460208302840111600160201b8311171561112157600080fd5b919390929091602081019035600160201b81111561113e57600080fd5b82018360208201111561115057600080fd5b803590602001918460208302840111600160201b8311171561117157600080fd5b919390929091602081019035600160201b81111561118e57600080fd5b8201836020820111156111a057600080fd5b803590602001918460018302840111600160201b831117156111c157600080fd5b50909250905061268c565b6102dd600480360360408110156111e257600080fd5b506001600160a01b03813581169160200135166126a7565b6103d3600480360360a081101561121057600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b81111561124f57600080fd5b82018360208201111561126157600080fd5b803590602001918460018302840111600160201b8311171561128257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506126ba945050505050565b6103d3600480360360408110156112d957600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561130357600080fd5b82018360208201111561131557600080fd5b803590602001918460208302840111600160201b8311171561133657600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061282a945050505050565b6103d36004803603602081101561138a57600080fd5b50356001600160a01b0316612a85565b6103d3600480360360608110156113b057600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156113e357600080fd5b8201836020820111156113f557600080fd5b803590602001918460208302840111600160201b8311171561141657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612ade945050505050565b60006001600160a01b0383166114ab576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a207a65726f206164647265737360481b604482015290519081900360640190fd5b6114d5827f0000000000000000000000000000000000000000000000000000000000000000612dc1565b1561150f576000828152600460205260409020546001600160a01b03848116911614611502576000611505565b60015b60ff169050611534565b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216630a216a2b60e31b148061155f575061155f82612de7565b90505b919050565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156115f35780601f106115c8576101008083540402835291602001916115f3565b820191906000526020600020905b8154815290600101906020018083116115d657829003601f168201915b505050505090505b90565b6000818152600460205260408120546001600160a01b038116611666576040805162461bcd60e51b815260206004820152601b60248201527a125b9d995b9d1bdc9e4e881b9bdb8b595e1a5cdd1a5b99c8139195602a1b604482015290519081900360640190fd5b600160a01b8116156116915750506000818152600960205260409020546001600160a01b0316611562565b6000915050611562565b600081815260046020526040902054806116fa576040805162461bcd60e51b815260206004820152601b60248201527a125b9d995b9d1bdc9e4e881b9bdb8b595e1a5cdd1a5b99c8139195602a1b604482015290519081900360640190fd5b806001600160a01b038481169082161415611757576040805162461bcd60e51b8152602060048201526018602482015277125b9d995b9d1bdc9e4e881cd95b198b585c1c1c9bdd985b60421b604482015290519081900360640190fd5b61176881611763612e0c565b612e16565b6117a7576040805162461bcd60e51b815260206004820152601e6024820152600080516020615b6f833981519152604482015290519081900360640190fd5b6001600160a01b0384166117e157600160a01b8216156117dc5760008381526004602052604090206001600160a01b03821690555b61182a565b600160a01b82178083146118015760008481526004602052604090208190555b50600083815260096020526040902080546001600160a01b0319166001600160a01b0386161790555b82846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b61188161187c612e0c565b612e62565b6119238787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250612ecf92505050565b50505050505050565b606061155f82613236565b6000611941612e0c565b9050600061194f8583612e16565b905061195a84613309565b156119705761196b85858584613313565b611a25565b61199a847f0000000000000000000000000000000000000000000000000000000000000000612dc1565b156119d8576119ad858585846000613455565b60405184906000906001600160a01b03881690600080516020615baf833981519152908390a4611a25565b6040805162461bcd60e51b815260206004820152601960248201527f496e76656e746f72793a206e6f74206120746f6b656e20696400000000000000604482015290519081900360640190fd5b60006001600160a01b0316856001600160a01b0316836001600160a01b0316600080516020615b4f8339815191528787604051808381526020018281526020019250505060405180910390a45050505050565b611a95838383604051806020016040528060008152506000613609565b505050565b611aa78585858585613751565b5050505050565b611ab961187c612e0c565b611ad58282604051806020016040528060008152506000613a75565b5050565b611a95838383604051806020016040528060008152506001613609565b611b0161187c612e0c565b611a9583838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613c0892505050565b6060838214611b82576040805162461bcd60e51b815260206004820152601e6024820152600080516020615b8f833981519152604482015290519081900360640190fd5b60008467ffffffffffffffff81118015611b9b57600080fd5b50604051908082528060200260200182016040528015611bc5578160200160208202803683370190505b50905060005b808614611c2857611c09878783818110611be157fe5b905060200201356001600160a01b0316868684818110611bfd57fe5b90506020020135611454565b828281518110611c1557fe5b6020908102919091010152600101611bcb565b5095945050505050565b600061155f82613f78565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148061155f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b600a805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015611d3c5780601f10611d1157610100808354040283529160200191611d3c565b820191906000526020600020905b815481529060010190602001808311611d1f57829003601f168201915b505050505081565b611d4f61187c612e0c565b611aa785858585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061401292505050565b600061155f82614154565b60006001600160a01b038216611df3576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a207a65726f206164647265737360481b604482015290519081900360640190fd5b506001600160a01b031660009081526008602052604090205490565b611e1f611e1a612e0c565b6141bc565b848381148015611e2e57508082145b611e7f576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114611ef757611eef888883818110611e9857fe5b905060200201356001600160a01b0316858584818110611eb457fe5b90506020020135888885818110611ec757fe5b905060200201356001600160a01b03166001600160a01b03166142809092919063ffffffff16565b600101611e82565b5050505050505050565b611f0c611e1a612e0c565b611f18600a8383615a65565b507f04b1dc5c136a3ce9fded8db0ce3d3366c58764ec3a8e4c2b9e52e4ddfe5ebbf7828260405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a15050565b815181518114611fc2576040805162461bcd60e51b815260206004820152601e6024820152600080516020615b8f833981519152604482015290519081900360640190fd5b6000611fcc612e0c565b90506000611fda8683612e16565b90506000806000805b86811461211d576000898281518110611ff857fe5b6020026020010151905061200b81613309565b156120345761202f8b828b858151811061202157fe5b602002602001015189613313565b612114565b61205e817f0000000000000000000000000000000000000000000000000000000000000000612dc1565b156119d8576120848b828b858151811061207457fe5b6020026020010151896001613455565b60405181906000906001600160a01b038e1690600080516020615baf833981519152908390a460006120d6827f00000000000000000000000000000000000000000000000000000000000000006142d2565b9050856120e95780955060019450612112565b85811461210b576120fb8c87876142e8565b9450600193929092019184612112565b8460010194505b505b50600101611fe3565b5082156121535761212f8984846142e8565b6001600160a01b038916600090815260086020526040902080549183019182900390555b60006001600160a01b0316896001600160a01b0316866001600160a01b0316600080516020615b2f8339815191528b8b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156121c75781810151838201526020016121af565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156122065781810151838201526020016121ee565b5050505090500194505050505060405180910390a4505050505050505050565b61223161187c612e0c565b612275848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250613a75915050565b50505050565b6000546001600160a01b031690565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156115f35780601f106115c8576101008083540402835291602001916115f3565b6122f6611e1a612e0c565b6122ff81614328565b50565b600061230c612e0c565b905061231781612e62565b6001600160a01b0381166000818152600b6020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b611ad58282614374565b600b6020526000908152604090205460ff1681565b600061155f82613309565b612275848484846001613609565b60006123c4827f0000000000000000000000000000000000000000000000000000000000000000612dc1565b156123fa576000828152600460205260409020546001600160a01b0316156123ed5760016123f0565b60005b60ff169050611562565b50600081815260036020526040902054611562565b61241a611e1a612e0c565b84838114801561242957508082145b61247a576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114611ef75785858281811061249057fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a858181106124bb57fe5b905060200201356001600160a01b03168787868181106124d757fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561253457600080fd5b505af1158015612548573d6000803e3d6000fd5b5050505080600101905061247d565b6060612561614450565b905090565b6000612592827f0000000000000000000000000000000000000000000000000000000000000000612dc1565b6125db576040805162461bcd60e51b8152602060048201526015602482015274125b9d995b9d1bdc9e4e881b9bdd08185b88139195605a1b604482015290519081900360640190fd5b61155f827f00000000000000000000000000000000000000000000000000000000000000006142d2565b6000818152600460205260409020546060906001600160a01b031661266f576040805162461bcd60e51b815260206004820152601b60248201527a125b9d995b9d1bdc9e4e881b9bdb8b595e1a5cdd1a5b99c8139195602a1b604482015290519081900360640190fd5b61155f8261192c565b612683611e1a612e0c565b6122ff81614494565b61269761187c612e0c565b611ef788888888888888886145e9565b60006126b3838361490e565b9392505050565b60006126c4612e0c565b90506001600160a01b03851661271f576040805162461bcd60e51b815260206004820152601b60248201527a496e76656e746f72793a207472616e7366657220746f207a65726f60281b604482015290519081900360640190fd5b600061272b8783612e16565b905061273685613309565b1561274d57612748878787878561493c565b6127bb565b612777857f0000000000000000000000000000000000000000000000000000000000000000612dc1565b156119d85761278b87878787856000614a95565b84866001600160a01b0316886001600160a01b0316600080516020615baf83398151915260405160405180910390a45b856001600160a01b0316876001600160a01b0316836001600160a01b0316600080516020615b4f8339815191528888604051808381526020018281526020019250505060405180910390a4612818866001600160a01b0316614c31565b15611923576119238787878787614c37565b6000612834612e0c565b905060006128428483612e16565b835190915060008167ffffffffffffffff8111801561286057600080fd5b5060405190808252806020026020018201604052801561288a578160200160208202803683370190505b50905060008060005b8481146129815760008882815181106128a857fe5b6020026020010151905060018583815181106128c057fe5b6020026020010181815250506128ed8a828785815181106128dd57fe5b60200260200101518a6001613455565b60405181906000906001600160a01b038d1690600080516020615baf833981519152908390a4600061293f827f00000000000000000000000000000000000000000000000000000000000000006142d2565b9050846129525780945060019350612977565b848114612970576129648b86866142e8565b80945060019350612977565b8360010193505b5050600101612893565b5081156129b3576129938883836142e8565b6001600160a01b0388166000908152600860205260409020805485900390555b60006001600160a01b0316886001600160a01b0316876001600160a01b0316600080516020615b2f8339815191528a87604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015612a27578181015183820152602001612a0f565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015612a66578181015183820152602001612a4e565b5050505090500194505050505060405180910390a45050505050505050565b612a90611e1a612e0c565b600080546001600160a01b0319166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001600160a01b038216612b37576040805162461bcd60e51b815260206004820152601b60248201527a496e76656e746f72793a207472616e7366657220746f207a65726f60281b604482015290519081900360640190fd5b6000612b41612e0c565b90506000612b4f8583612e16565b835190915060008167ffffffffffffffff81118015612b6d57600080fd5b50604051908082528060200260200182016040528015612b97578160200160208202803683370190505b50905060008060005b848114612c87576000888281518110612bb557fe5b602002602001015190506001858381518110612bcd57fe5b602002602001018181525050612be98b8b8360018b6001614a95565b808a6001600160a01b03168c6001600160a01b0316600080516020615baf83398151915260405160405180910390a46000612c44827f00000000000000000000000000000000000000000000000000000000000000006142d2565b905084612c575780945060019350612c7d565b848114612c7657612c6a8c8c8787614da8565b80945060019350612c7d565b8360010193505b5050600101612ba0565b508115612ca557612c9a89898484614da8565b612ca5898986614dfc565b876001600160a01b0316896001600160a01b0316612cc1612e0c565b6001600160a01b0316600080516020615b2f8339815191528a87604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015612d1f578181015183820152602001612d07565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015612d5e578181015183820152602001612d46565b5050505090500194505050505060405180910390a4612d85886001600160a01b0316614c31565b8015612d955750612d9588614e47565b15612db657612db68989898660405180602001604052806000815250614ec8565b505050505050505050565b6000600160ff1b8316158015906126b35750612ddc8261502d565b909216151592915050565b60006001600160e01b031982166318167c6d60e21b148061155f575061155f8261503e565b6000612561615099565b6000816001600160a01b0316836001600160a01b031614806126b35750506001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6001600160a01b0381166000908152600b602052604090205460ff166122ff576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b038416612f24576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b825182518114612f69576040805162461bcd60e51b815260206004820152601e6024820152600080516020615b8f833981519152604482015290519081900360640190fd5b6000806000805b8481146130f6576000888281518110612f8557fe5b602002602001015190506000888381518110612f9d57fe5b60200260200101519050612fb082613309565b15612fc557612fc08b83836151f9565b6130ec565b612fef827f0000000000000000000000000000000000000000000000000000000000000000612dc1565b156119d8576130018b838360016152e3565b60405182906001600160a01b038d1690600090600080516020615baf833981519152908290a46000613053837f00000000000000000000000000000000000000000000000000000000000000006142d2565b90508661306657809650600195506130ea565b8681146130e357856002600089815260200190815260200160002060008e6001600160a01b03166001600160a01b03168152602001908152602001600020600082825401925050819055508560036000898152602001908152602001600020600082825401925050819055508096508585019450600195506130ea565b8560010195505b505b5050600101612f70565b50821561314b5760008381526002602090815260408083206001600160a01b038c1680855290835281842080548701905586845260038352818420805487019055835260089091529020805491830191820190555b6001600160a01b038816600061315f612e0c565b6001600160a01b0316600080516020615b2f8339815191528a8a604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156131bd5781810151838201526020016131a5565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156131fc5781810151838201526020016131e4565b5050505090500194505050505060405180910390a4613223886001600160a01b0316614c31565b15611ef757611ef7600089898989614ec8565b6060600a61324383615430565b60405160200180838054600181600116156101000203166002900480156132a15780601f1061327f5761010080835404028352918201916132a1565b820191906000526020600020905b81548152906001019060200180831161328d575b5050825160208401908083835b602083106132cd5780518252601f1990920191602091820191016132ae565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529050919050565b600160ff1b161590565b8161335d576040805162461bcd60e51b8152602060048201526015602482015274496e76656e746f72793a207a65726f2076616c756560581b604482015290519081900360640190fd5b8061339d576040805162461bcd60e51b815260206004820152601e6024820152600080516020615b6f833981519152604482015290519081900360640190fd5b60008381526002602090815260408083206001600160a01b038816845290915290205482811015613415576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365000000604482015290519081900360640190fd5b60008481526002602090815260408083206001600160a01b0390981683529681528682209285900390925593845260039052509190208054919091039055565b826001146134a7576040805162461bcd60e51b815260206004820152601a602482015279496e76656e746f72793a2077726f6e67204e46542076616c756560301b604482015290519081900360640190fd5b6000848152600460205260409020546001600160a01b0386811690821614613511576040805162461bcd60e51b8152602060048201526018602482015277125b9d995b9d1bdc9e4e881b9bdb8b5bdddb99590813919560421b604482015290519081900360640190fd5b8261359057600160a01b81161580159061355157506000858152600960205260409020546001600160a01b0316613546612e0c565b6001600160a01b0316145b613590576040805162461bcd60e51b815260206004820152601e6024820152600080516020615b6f833981519152604482015290519081900360640190fd5b600085815260046020526040902061dead60f01b905581613601576135e0866135d9877f00000000000000000000000000000000000000000000000000000000000000006142d2565b60016142e8565b6001600160a01b038616600090815260086020526040902080546000190190555b505050505050565b6001600160a01b038416613662576040805162461bcd60e51b815260206004820152601b60248201527a496e76656e746f72793a207472616e7366657220746f207a65726f60281b604482015290519081900360640190fd5b600061366c612e0c565b9050600061367a8783612e16565b905061368c8787876001856000614a95565b84866001600160a01b0316886001600160a01b0316600080516020615baf83398151915260405160405180910390a4856001600160a01b0316876001600160a01b0316836001600160a01b0316600080516020615b4f833981519152886001604051808381526020018281526020019250505060405180910390a4613719866001600160a01b0316614c31565b156119235761372786614e47565b1561373f5761373a878787600188614c37565b611923565b8215611923576119238787878761550b565b6001600160a01b0384166137aa576040805162461bcd60e51b815260206004820152601b60248201527a496e76656e746f72793a207472616e7366657220746f207a65726f60281b604482015290519081900360640190fd5b8251825181146137ef576040805162461bcd60e51b815260206004820152601e6024820152600080516020615b8f833981519152604482015290519081900360640190fd5b60006137f9612e0c565b905060006138078883612e16565b90506000806000805b8681146139565760008a828151811061382557fe5b6020026020010151905061383881613309565b156138625761385d8d8d838d868151811061384f57fe5b60200260200101518a61493c565b61394d565b61388c817f0000000000000000000000000000000000000000000000000000000000000000612dc1565b156119d8576138b38d8d838d86815181106138a357fe5b60200260200101518a6001614a95565b808c6001600160a01b03168e6001600160a01b0316600080516020615baf83398151915260405160405180910390a4600061390e827f00000000000000000000000000000000000000000000000000000000000000006142d2565b905085613921578095506001945061394b565b858114613944576139348e8e8888614da8565b945060019392909201918461394b565b8460010194505b505b50600101613810565b508215613976576139698b8b8585614da8565b81016139768b8b83614dfc565b896001600160a01b03168b6001600160a01b0316613992612e0c565b6001600160a01b0316600080516020615b2f8339815191528c8c604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156139f05781810151838201526020016139d8565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015613a2f578181015183820152602001613a17565b5050505090500194505050505060405180910390a4613a568a6001600160a01b0316614c31565b15613a6857613a688b8b8b8b8b614ec8565b5050505050505050505050565b6001600160a01b038416613aca576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b613af4837f0000000000000000000000000000000000000000000000000000000000000000612dc1565b613b3d576040805162461bcd60e51b8152602060048201526015602482015274125b9d995b9d1bdc9e4e881b9bdd08185b88139195605a1b604482015290519081900360640190fd5b613b4b8484600160006152e3565b60405183906001600160a01b03861690600090600080516020615baf833981519152908290a46001600160a01b0384166000613b85612e0c565b6001600160a01b0316600080516020615b4f833981519152866001604051808381526020018281526020019250505060405180910390a4613bce846001600160a01b0316614c31565b1561227557613bdc84614e47565b15613bf557613bf060008585600186614c37565b612275565b801561227557612275600085858561550b565b6001600160a01b038216613c5d576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b805160008167ffffffffffffffff81118015613c7857600080fd5b50604051908082528060200260200182016040528015613ca2578160200160208202803683370190505b50905060008060005b848114613e2e576000868281518110613cc057fe5b60200260200101519050613cfd7f000000000000000000000000000000000000000000000000000000000000000082612dc190919063ffffffff16565b613d46576040805162461bcd60e51b8152602060048201526015602482015274125b9d995b9d1bdc9e4e881b9bdd08185b88139195605a1b604482015290519081900360640190fd5b6001858381518110613d5457fe5b602002602001018181525050613d6d88826001806152e3565b60405181906001600160a01b038a1690600090600080516020615baf833981519152908290a46000613dbf827f00000000000000000000000000000000000000000000000000000000000000006142d2565b905084613dd25780945060019350613e24565b848114613e1d5760008581526002602090815260408083206001600160a01b038d16845282528083208054880190559682526003905294909420805490930190925560019183613e24565b8360010193505b5050600101613cab565b5060008281526002602090815260408083206001600160a01b038a16808552908352818420805486019055858452600383528184208054860190558084526008909252822080548701905590613e82612e0c565b6001600160a01b0316600080516020615b2f8339815191528887604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015613ee0578181015183820152602001613ec8565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015613f1f578181015183820152602001613f07565b5050505090500194505050505060405180910390a4613f46866001600160a01b0316614c31565b8015613f565750613f5686614e47565b1561360157613601600087878660405180602001604052806000815250614ec8565b6000613fa4827f0000000000000000000000000000000000000000000000000000000000000000612dc1565b15613ff6576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b506000908152600560205260409020546001600160a01b031690565b6001600160a01b038416614067576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b6000614071612e0c565b905061407c84613309565b156140915761408c8585856151f9565b6140f4565b6140bb847f0000000000000000000000000000000000000000000000000000000000000000612dc1565b156119d8576140cd85858560006152e3565b60405184906001600160a01b03871690600090600080516020615baf833981519152908290a45b604080518581526020810185905281516001600160a01b038089169360009391861692600080516020615b4f8339815191529281900390910190a4614141856001600160a01b0316614c31565b15611aa757611aa7600086868686614c37565b6000818152600460205260408120546001600160a01b03811661155f576040805162461bcd60e51b815260206004820152601b60248201527a125b9d995b9d1bdc9e4e881b9bdb8b595e1a5cdd1a5b99c8139195602a1b604482015290519081900360640190fd5b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156141f557600080fd5b505afa158015614209573d6000803e3d6000fd5b505050506040513d602081101561421f57600080fd5b50516001600160a01b038281169116146122ff576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611a95908490615674565b60006142dd8261502d565b198316905092915050565b60008281526002602090815260408083206001600160a01b0390961683529481528482208054849003905592815260039092529190208054919091039055565b6001600160a01b0381166000818152600b6020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b600061437e612e0c565b9050806001600160a01b0316836001600160a01b031614156143e2576040805162461bcd60e51b8152602060048201526018602482015277125b9d995b9d1bdc9e4e881cd95b198b585c1c1c9bdd985b60421b604482015290519081900360640190fd5b6001600160a01b03818116600081815260016020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b606061445a615857565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b6144be817f0000000000000000000000000000000000000000000000000000000000000000612dc1565b15614510576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b6000818152600560205260409020546001600160a01b03161561457a576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206578697374696e6720636f6c6c656374696f6e0000604482015290519081900360640190fd5b614582612e0c565b600082815260056020526040902080546001600160a01b0319166001600160a01b03929092169190911790556145b781613309565b1515817f4ebf8ad0df535ba5e487bc9cb27fe44120ca81c3a95d3eba79c0bd1df2ab2d5d60405160405180910390a350565b8685811480156145f857508084145b614637576040805162461bcd60e51b815260206004820152601e6024820152600080516020615b8f833981519152604482015290519081900360640190fd5b6000614641612e0c565b905060005b828114613a685760008b8b8381811061465b57fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b031614156146cf576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b60008a8a848181106146dd57fe5b90506020020135905060008989858181106146f457fe5b90506020020135905061470682613309565b156147b1576147168383836151f9565b604080518381526020810183905281516001600160a01b0380871693600093918a1692600080516020615b4f8339815191529281900390910190a4614763836001600160a01b0316614c31565b156147ac576147ac60008484848c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250614c3792505050565b614900565b6147db827f0000000000000000000000000000000000000000000000000000000000000000612dc1565b156119d8576147ed83838360006152e3565b60405182906001600160a01b03851690600090600080516020615baf833981519152908290a4604080518381526001602082015281516001600160a01b0380871693600093918a1692600080516020615b4f8339815191529281900390910190a4614860836001600160a01b0316614c31565b156147ac5761486e83614e47565b156148bd576148b86000848460018c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250614c3792505050565b6147ac565b6147ac600084848b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061550b92505050565b505050806001019050614646565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b8061497c576040805162461bcd60e51b815260206004820152601e6024820152600080516020615b6f833981519152604482015290519081900360640190fd5b816149c6576040805162461bcd60e51b8152602060048201526015602482015274496e76656e746f72793a207a65726f2076616c756560581b604482015290519081900360640190fd5b60008381526002602090815260408083206001600160a01b038916845290915290205482811015614a3e576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365000000604482015290519081900360640190fd5b846001600160a01b0316866001600160a01b0316146136015760009384526002602090815260408086206001600160a01b039889168752909152808520918490039091559390941682529190208054909101905550565b82600114614ae7576040805162461bcd60e51b815260206004820152601a602482015279496e76656e746f72793a2077726f6e67204e46542076616c756560301b604482015290519081900360640190fd5b6000848152600460205260409020546001600160a01b0387811690821614614b51576040805162461bcd60e51b8152602060048201526018602482015277125b9d995b9d1bdc9e4e881b9bdb8b5bdddb99590813919560421b604482015290519081900360640190fd5b82614bd057600160a01b811615801590614b9157506000858152600960205260409020546001600160a01b0316614b86612e0c565b6001600160a01b0316145b614bd0576040805162461bcd60e51b815260206004820152601e6024820152600080516020615b6f833981519152604482015290519081900360640190fd5b60008581526004602052604090206001600160a01b03871690558161192357614bfb87876001614dfc565b6119238787614c2a887f00000000000000000000000000000000000000000000000000000000000000006142d2565b6001614da8565b3b151590565b63f23a6e6160e01b6001600160a01b03851663f23a6e61614c56612e0c565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614cd0578181015183820152602001614cb8565b50505050905090810190601f168015614cfd5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b158015614d2057600080fd5b505af1158015614d34573d6000803e3d6000fd5b505050506040513d6020811015614d4a57600080fd5b50516001600160e01b03191614611aa7576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220726566757365640000000000604482015290519081900360640190fd5b826001600160a01b0316846001600160a01b0316146122755760009182526002602090815260408084206001600160a01b039687168552909152808320805483900390559290931681522080549091019055565b816001600160a01b0316836001600160a01b031614611a95576001600160a01b0380841660009081526008602052604080822080548590039055918416815220805482019055505050565b60408051630271189760e51b6024808301919091528251808303909101815260449091018252602081810180516001600160e01b03166301ffc9a760e01b1781528251935160008082529485948594909392908183858b612710fa955080519450505050609e5a11614eb557fe5b828015614ebf5750815b95945050505050565b63bc197c8160e01b6001600160a01b03851663bc197c81614ee7612e0c565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015614f60578181015183820152602001614f48565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015614f9f578181015183820152602001614f87565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015614fdb578181015183820152602001614fc3565b50505050905090810190601f1680156150085780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b158015614d2057600080fd5b6001610100919091031b6000190190565b60006001600160e01b031982166380ac58cd60e01b148061506f57506001600160e01b03198216635b5e139f60e01b145b8061508a57506001600160e01b0319821663f3993d1160e01b145b8061155f575061155f826159ba565b600033816150a5615a3e565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148061511857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b156151265791506115fb9050565b6001600160a01b03821632148015906151e557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b1580156151b857600080fd5b505afa1580156151cc573d6000803e3d6000fd5b505050506040513d60208110156151e257600080fd5b50515b156151f35791506115fb9050565b50905090565b80615243576040805162461bcd60e51b8152602060048201526015602482015274496e76656e746f72793a207a65726f2076616c756560581b604482015290519081900360640190fd5b6000828152600360205260409020548181018181116152a9576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a20737570706c79206f766572666c6f77000000000000604482015290519081900360640190fd5b600093845260036020908152604080862092909255600281528185206001600160a01b039096168552949094525091902080549091019055565b81600114615335576040805162461bcd60e51b815260206004820152601a602482015279496e76656e746f72793a2077726f6e67204e46542076616c756560301b604482015290519081900360640190fd5b60008381526004602052604090205415615396576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206578697374696e672f6275726e74204e4654000000604482015290519081900360640190fd5b60008381526004602052604090206001600160a01b0385169055806122755760006153e1847f00000000000000000000000000000000000000000000000000000000000000006142d2565b600090815260036020908152604080832080546001908101909155600283528184206001600160a01b038a16855283528184208054820190556008909252909120805490910190555050505050565b60608161545557506040805180820190915260018152600360fc1b6020820152611562565b8160005b811561546d57600101600a82049150615459565b60008167ffffffffffffffff8111801561548657600080fd5b506040519080825280601f01601f1916602001820160405280156154b1576020820181803683370190505b50859350905060001982015b831561550257600a840660300160f81b828280600190039350815181106154e057fe5b60200101906001600160f81b031916908160001a905350600a840493506154bd565b50949350505050565b630a85bd0160e11b6001600160a01b03841663150b7a0261552a612e0c565b8786866040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561559d578181015183820152602001615585565b50505050905090810190601f1680156155ca5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156155ec57600080fd5b505af1158015615600573d6000803e3d6000fd5b505050506040513d602081101561561657600080fd5b50516001600160e01b03191614612275576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220726566757365640000000000604482015290519081900360640190fd5b816156876001600160a01b038216614c31565b6156d8576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b602083106157155780518252601f1990920191602091820191016156f6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114615777576040519150601f19603f3d011682016040523d82523d6000602084013e61577c565b606091505b509150915081156157fb578051156157f6578080602001905160208110156157a357600080fd5b50516157f6576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b611aa7565b805161584e576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b366000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168114806158c357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b156158da576158d0615a4a565b92509250506159b6565b6001600160a01b03811632148015906159a057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d6615925615a3e565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561597357600080fd5b505afa158015615987573d6000803e3d6000fd5b505050506040513d602081101561599d57600080fd5b50515b156159ad576158d0615a4a565b60003692509250505b9091565b60006001600160e01b031982166301ffc9a760e01b14806159eb57506001600160e01b03198216636cdb3d1360e11b145b80615a0657506001600160e01b031982166303a24d0760e21b145b80615a2157506001600160e01b031982166304e72e2360e11b145b8061155f5750506001600160e01b03191663bd85b03960e01b1490565b60131936013560601c90565b366000615a5d6013198301828481615b06565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282615a9b5760008555615ae1565b82601f10615ab45782800160ff19823516178555615ae1565b82800160010185558215615ae1579182015b82811115615ae1578235825591602001919060010190615ac6565b50615aed929150615af1565b5090565b5b80821115615aed5760008155600101615af2565b60008085851115615b15578182fd5b83861115615b21578182fd5b505082019391909203915056fe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fbc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000496e76656e746f72793a20696e636f6e73697374656e74206172726179730000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212204933b334c19fb0c285b9354e0a7eb102b3c322e6349f8b8b0adea5a4b3e7134364736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x273 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x80534934 GT PUSH2 0x151 JUMPI DUP1 PUSH4 0xC3666C36 GT PUSH2 0xC3 JUMPI DUP1 PUSH4 0xE8AB9CCC GT PUSH2 0x87 JUMPI DUP1 PUSH4 0xE8AB9CCC EQ PUSH2 0x106E JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x11CC JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x11FA JUMPI DUP1 PUSH4 0xF2472965 EQ PUSH2 0x12C3 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1374 JUMPI DUP1 PUSH4 0xF3993D11 EQ PUSH2 0x139A JUMPI PUSH2 0x273 JUMP JUMPDEST DUP1 PUSH4 0xC3666C36 EQ PUSH2 0xF01 JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0x100F JUMPI DUP1 PUSH4 0xC7778BAA EQ PUSH2 0x1017 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x1034 JUMPI DUP1 PUSH4 0xD0011D9D EQ PUSH2 0x1051 JUMPI PUSH2 0x273 JUMP JUMPDEST DUP1 PUSH4 0x98650275 GT PUSH2 0x115 JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0xDA7 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0xDAF JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0xDDD JUMPI DUP1 PUSH4 0xADEBF6F2 EQ PUSH2 0xE03 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0xE20 JUMPI DUP1 PUSH4 0xBD85B039 EQ PUSH2 0xEE4 JUMPI PUSH2 0x273 JUMP JUMPDEST DUP1 PUSH4 0x80534934 EQ PUSH2 0xBBB JUMPI DUP1 PUSH4 0x8832E6E3 EQ PUSH2 0xCEE JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xD71 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xD79 JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0xD81 JUMPI PUSH2 0x273 JUMP JUMPDEST DUP1 PUSH4 0x42842E0E GT PUSH2 0x1EA JUMPI DUP1 PUSH4 0x5B2BD79E GT PUSH2 0x1AE JUMPI DUP1 PUSH4 0x5B2BD79E EQ PUSH2 0x96A JUMPI DUP1 PUSH4 0x5CFA9297 EQ PUSH2 0x972 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x9FC JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xA19 JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0xA3F JUMPI DUP1 PUSH4 0x7E518EC8 EQ PUSH2 0xB4D JUMPI PUSH2 0x273 JUMP JUMPDEST DUP1 PUSH4 0x42842E0E EQ PUSH2 0x765 JUMPI DUP1 PUSH4 0x4684D7E9 EQ PUSH2 0x79B JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x819 JUMPI DUP1 PUSH4 0x510B5158 EQ PUSH2 0x927 JUMPI DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x944 JUMPI PUSH2 0x273 JUMP JUMPDEST DUP1 PUSH4 0xD6A5BBB GT PUSH2 0x23C JUMPI DUP1 PUSH4 0xD6A5BBB EQ PUSH2 0x3D5 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x4F3 JUMPI DUP1 PUSH4 0x124D91E5 EQ PUSH2 0x510 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x542 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x578 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x739 JUMPI PUSH2 0x273 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x278 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x2B6 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2F1 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x36E JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x3A7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x28E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1454 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x153A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2F9 PUSH2 0x1567 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 0x333 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x31B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x360 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 0x38B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x384 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x15FE 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 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x169B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x3EB 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 0x415 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x427 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 0x448 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 0x465 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x477 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 0x498 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 0x4B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4C7 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 0x4E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1871 JUMP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x509 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x192C JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x526 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 0x1937 JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x558 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 0x1A78 JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x58E 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 0x5C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5D3 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 0x5F4 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 0x643 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x655 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 0x676 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 0x6C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6D7 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 0x6F8 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 0x1A9A SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x74F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1AAE JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x77B 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 0x1AD9 JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x7B1 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 0x7DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7ED 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 0x80E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1AF6 JUMP JUMPDEST PUSH2 0x8D7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x82F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x849 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x85B 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 0x87C 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 0x899 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8AB 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 0x8CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1B3E 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 0x913 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8FB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x38B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x93D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1C32 JUMP JUMPDEST PUSH2 0x2DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x95A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1C3D JUMP JUMPDEST PUSH2 0x2F9 PUSH2 0x1CB6 JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x988 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 0x9BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x9D0 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 0x9F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1D44 JUMP JUMPDEST PUSH2 0x38B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1D91 JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D9C JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xA55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xA6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA81 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 0xAA2 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 0xABF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xAD1 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 0xAF2 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 0xB0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB21 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 0xB42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1E0F JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xB7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB8F 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 0xBB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1F01 JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xBD1 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 0xBFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC0D 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 0xC2E 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 0xC7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC8F 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 0xCB0 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 0x1F7D SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xD04 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 0xD33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD45 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 0xD66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2226 JUMP JUMPDEST PUSH2 0x38B PUSH2 0x227B JUMP JUMPDEST PUSH2 0x2F9 PUSH2 0x228A JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x22EB JUMP JUMPDEST PUSH2 0x3D3 PUSH2 0x2302 JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xDC5 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 0x2360 JUMP JUMPDEST PUSH2 0x2DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x236A JUMP JUMPDEST PUSH2 0x2DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x237F JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xE36 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 0xE70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xE82 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 0xEA3 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 0x238A SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2398 JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xF17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xF31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xF43 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 0xF64 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 0xF81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xF93 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 0xFB4 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 0xFD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xFE3 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 0x1004 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x240F JUMP JUMPDEST PUSH2 0x2F9 PUSH2 0x2557 JUMP JUMPDEST PUSH2 0x2A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x102D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2566 JUMP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x104A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2605 JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1067 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2678 JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1084 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x109E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x10B0 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 0x10D1 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 0x10EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1100 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 0x1121 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 0x113E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1150 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 0x1171 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 0x118E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x11A0 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 0x11C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x268C JUMP JUMPDEST PUSH2 0x2DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x11E2 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 0x26A7 JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x1210 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 0x124F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1261 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 0x1282 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 0x26BA SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x12D9 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 0x1303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1315 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 0x1336 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 0x282A SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x138A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A85 JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x13B0 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 0x13E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x13F5 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 0x1416 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 0x2ADE SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x14AB 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 0x496E76656E746F72793A207A65726F2061646472657373 PUSH1 0x48 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x14D5 DUP3 PUSH32 0x0 PUSH2 0x2DC1 JUMP JUMPDEST ISZERO PUSH2 0x150F 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 0x1502 JUMPI PUSH1 0x0 PUSH2 0x1505 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x1534 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 0x155F JUMPI POP PUSH2 0x155F DUP3 PUSH2 0x2DE7 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 0x15F3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x15C8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x15F3 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 0x15D6 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 0x1666 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 PUSH27 0x125B9D995B9D1BDC9E4E881B9BDB8B595E1A5CDD1A5B99C8139195 PUSH1 0x2A SHL 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 0x1691 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 0x1562 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x1562 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x16FA 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 PUSH27 0x125B9D995B9D1BDC9E4E881B9BDB8B595E1A5CDD1A5B99C8139195 PUSH1 0x2A SHL 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 0x1757 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 PUSH24 0x125B9D995B9D1BDC9E4E881CD95B198B585C1C1C9BDD985B PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1768 DUP2 PUSH2 0x1763 PUSH2 0x2E0C JUMP JUMPDEST PUSH2 0x2E16 JUMP JUMPDEST PUSH2 0x17A7 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B6F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x17E1 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP3 AND ISZERO PUSH2 0x17DC 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 0x182A JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP3 OR DUP1 DUP4 EQ PUSH2 0x1801 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x1881 PUSH2 0x187C PUSH2 0x2E0C JUMP JUMPDEST PUSH2 0x2E62 JUMP JUMPDEST PUSH2 0x1923 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 0x2ECF SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x155F DUP3 PUSH2 0x3236 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1941 PUSH2 0x2E0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x194F DUP6 DUP4 PUSH2 0x2E16 JUMP JUMPDEST SWAP1 POP PUSH2 0x195A DUP5 PUSH2 0x3309 JUMP JUMPDEST ISZERO PUSH2 0x1970 JUMPI PUSH2 0x196B DUP6 DUP6 DUP6 DUP5 PUSH2 0x3313 JUMP JUMPDEST PUSH2 0x1A25 JUMP JUMPDEST PUSH2 0x199A DUP5 PUSH32 0x0 PUSH2 0x2DC1 JUMP JUMPDEST ISZERO PUSH2 0x19D8 JUMPI PUSH2 0x19AD DUP6 DUP6 DUP6 DUP5 PUSH1 0x0 PUSH2 0x3455 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 0x5BAF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP4 SWAP1 LOG4 PUSH2 0x1A25 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x1A95 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x3609 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1AA7 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x3751 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1AB9 PUSH2 0x187C PUSH2 0x2E0C JUMP JUMPDEST PUSH2 0x1AD5 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x3A75 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x1A95 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x1 PUSH2 0x3609 JUMP JUMPDEST PUSH2 0x1B01 PUSH2 0x187C PUSH2 0x2E0C JUMP JUMPDEST PUSH2 0x1A95 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 0x3C08 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 DUP3 EQ PUSH2 0x1B82 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B8F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x1B9B 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 0x1BC5 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 0x1C28 JUMPI PUSH2 0x1C09 DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x1BE1 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 0x1BFD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x1454 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1C15 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1BCB JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x155F DUP3 PUSH2 0x3F78 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 0x155F 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 0x1D3C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1D11 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1D3C 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 0x1D1F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH2 0x1D4F PUSH2 0x187C PUSH2 0x2E0C JUMP JUMPDEST PUSH2 0x1AA7 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 0x4012 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x155F DUP3 PUSH2 0x4154 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1DF3 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 0x496E76656E746F72793A207A65726F2061646472657373 PUSH1 0x48 SHL 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 0x1E1F PUSH2 0x1E1A PUSH2 0x2E0C JUMP JUMPDEST PUSH2 0x41BC JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1E2E JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1E7F 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 0x1EF7 JUMPI PUSH2 0x1EEF DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x1E98 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 0x1EB4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x1EC7 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 0x4280 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1E82 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1F0C PUSH2 0x1E1A PUSH2 0x2E0C JUMP JUMPDEST PUSH2 0x1F18 PUSH1 0xA DUP4 DUP4 PUSH2 0x5A65 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 0x1FC2 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B8F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1FCC PUSH2 0x2E0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1FDA DUP7 DUP4 PUSH2 0x2E16 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP7 DUP2 EQ PUSH2 0x211D JUMPI PUSH1 0x0 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1FF8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x200B DUP2 PUSH2 0x3309 JUMP JUMPDEST ISZERO PUSH2 0x2034 JUMPI PUSH2 0x202F DUP12 DUP3 DUP12 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x2021 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 PUSH2 0x3313 JUMP JUMPDEST PUSH2 0x2114 JUMP JUMPDEST PUSH2 0x205E DUP2 PUSH32 0x0 PUSH2 0x2DC1 JUMP JUMPDEST ISZERO PUSH2 0x19D8 JUMPI PUSH2 0x2084 DUP12 DUP3 DUP12 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x2074 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 PUSH1 0x1 PUSH2 0x3455 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 0x5BAF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP4 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x20D6 DUP3 PUSH32 0x0 PUSH2 0x42D2 JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x20E9 JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x2112 JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x210B JUMPI PUSH2 0x20FB DUP13 DUP8 DUP8 PUSH2 0x42E8 JUMP JUMPDEST SWAP5 POP PUSH1 0x1 SWAP4 SWAP3 SWAP1 SWAP3 ADD SWAP2 DUP5 PUSH2 0x2112 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1FE3 JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x2153 JUMPI PUSH2 0x212F DUP10 DUP5 DUP5 PUSH2 0x42E8 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x21C7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x21AF 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 0x2206 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x21EE 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 0x2231 PUSH2 0x187C PUSH2 0x2E0C JUMP JUMPDEST PUSH2 0x2275 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 0x3A75 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 0x15F3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x15C8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x15F3 JUMP JUMPDEST PUSH2 0x22F6 PUSH2 0x1E1A PUSH2 0x2E0C JUMP JUMPDEST PUSH2 0x22FF DUP2 PUSH2 0x4328 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x230C PUSH2 0x2E0C JUMP JUMPDEST SWAP1 POP PUSH2 0x2317 DUP2 PUSH2 0x2E62 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 0x1AD5 DUP3 DUP3 PUSH2 0x4374 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 0x155F DUP3 PUSH2 0x3309 JUMP JUMPDEST PUSH2 0x2275 DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x3609 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x23C4 DUP3 PUSH32 0x0 PUSH2 0x2DC1 JUMP JUMPDEST ISZERO PUSH2 0x23FA 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 0x23ED JUMPI PUSH1 0x1 PUSH2 0x23F0 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x1562 JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1562 JUMP JUMPDEST PUSH2 0x241A PUSH2 0x1E1A PUSH2 0x2E0C JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x2429 JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x247A 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 0x1EF7 JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x2490 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 0x24BB 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 0x24D7 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 0x2534 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2548 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x247D JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2561 PUSH2 0x4450 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2592 DUP3 PUSH32 0x0 PUSH2 0x2DC1 JUMP JUMPDEST PUSH2 0x25DB 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 0x155F DUP3 PUSH32 0x0 PUSH2 0x42D2 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 0x266F 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 PUSH27 0x125B9D995B9D1BDC9E4E881B9BDB8B595E1A5CDD1A5B99C8139195 PUSH1 0x2A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x155F DUP3 PUSH2 0x192C JUMP JUMPDEST PUSH2 0x2683 PUSH2 0x1E1A PUSH2 0x2E0C JUMP JUMPDEST PUSH2 0x22FF DUP2 PUSH2 0x4494 JUMP JUMPDEST PUSH2 0x2697 PUSH2 0x187C PUSH2 0x2E0C JUMP JUMPDEST PUSH2 0x1EF7 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x45E9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26B3 DUP4 DUP4 PUSH2 0x490E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26C4 PUSH2 0x2E0C JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x271F 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 PUSH27 0x496E76656E746F72793A207472616E7366657220746F207A65726F PUSH1 0x28 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x272B DUP8 DUP4 PUSH2 0x2E16 JUMP JUMPDEST SWAP1 POP PUSH2 0x2736 DUP6 PUSH2 0x3309 JUMP JUMPDEST ISZERO PUSH2 0x274D JUMPI PUSH2 0x2748 DUP8 DUP8 DUP8 DUP8 DUP6 PUSH2 0x493C JUMP JUMPDEST PUSH2 0x27BB JUMP JUMPDEST PUSH2 0x2777 DUP6 PUSH32 0x0 PUSH2 0x2DC1 JUMP JUMPDEST ISZERO PUSH2 0x19D8 JUMPI PUSH2 0x278B DUP8 DUP8 DUP8 DUP8 DUP6 PUSH1 0x0 PUSH2 0x4A95 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 0x5BAF 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x2818 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4C31 JUMP JUMPDEST ISZERO PUSH2 0x1923 JUMPI PUSH2 0x1923 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x4C37 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2834 PUSH2 0x2E0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2842 DUP5 DUP4 PUSH2 0x2E16 JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2860 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 0x288A 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 0x2981 JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x28A8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x1 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x28C0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x28ED DUP11 DUP3 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x28DD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP11 PUSH1 0x1 PUSH2 0x3455 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 0x5BAF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP4 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x293F DUP3 PUSH32 0x0 PUSH2 0x42D2 JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x2952 JUMPI DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x2977 JUMP JUMPDEST DUP5 DUP2 EQ PUSH2 0x2970 JUMPI PUSH2 0x2964 DUP12 DUP7 DUP7 PUSH2 0x42E8 JUMP JUMPDEST DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x2977 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x2893 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x29B3 JUMPI PUSH2 0x2993 DUP9 DUP4 DUP4 PUSH2 0x42E8 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x2A27 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2A0F 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 0x2A66 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2A4E 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 0x2A90 PUSH2 0x1E1A PUSH2 0x2E0C JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x2B37 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 PUSH27 0x496E76656E746F72793A207472616E7366657220746F207A65726F PUSH1 0x28 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2B41 PUSH2 0x2E0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2B4F DUP6 DUP4 PUSH2 0x2E16 JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2B6D 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 0x2B97 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 0x2C87 JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2BB5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x1 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2BCD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x2BE9 DUP12 DUP12 DUP4 PUSH1 0x1 DUP12 PUSH1 0x1 PUSH2 0x4A95 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 0x5BAF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x0 PUSH2 0x2C44 DUP3 PUSH32 0x0 PUSH2 0x42D2 JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x2C57 JUMPI DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x2C7D JUMP JUMPDEST DUP5 DUP2 EQ PUSH2 0x2C76 JUMPI PUSH2 0x2C6A DUP13 DUP13 DUP8 DUP8 PUSH2 0x4DA8 JUMP JUMPDEST DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x2C7D JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x2BA0 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x2CA5 JUMPI PUSH2 0x2C9A DUP10 DUP10 DUP5 DUP5 PUSH2 0x4DA8 JUMP JUMPDEST PUSH2 0x2CA5 DUP10 DUP10 DUP7 PUSH2 0x4DFC JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2CC1 PUSH2 0x2E0C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x2D1F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2D07 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 0x2D5E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2D46 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x2D85 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4C31 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2D95 JUMPI POP PUSH2 0x2D95 DUP9 PUSH2 0x4E47 JUMP JUMPDEST ISZERO PUSH2 0x2DB6 JUMPI PUSH2 0x2DB6 DUP10 DUP10 DUP10 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x4EC8 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 0x26B3 JUMPI POP PUSH2 0x2DDC DUP3 PUSH2 0x502D 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 0x155F JUMPI POP PUSH2 0x155F DUP3 PUSH2 0x503E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2561 PUSH2 0x5099 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 0x26B3 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 0x22FF 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 0x2F24 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 0x2F69 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B8F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x30F6 JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2F85 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2F9D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x2FB0 DUP3 PUSH2 0x3309 JUMP JUMPDEST ISZERO PUSH2 0x2FC5 JUMPI PUSH2 0x2FC0 DUP12 DUP4 DUP4 PUSH2 0x51F9 JUMP JUMPDEST PUSH2 0x30EC JUMP JUMPDEST PUSH2 0x2FEF DUP3 PUSH32 0x0 PUSH2 0x2DC1 JUMP JUMPDEST ISZERO PUSH2 0x19D8 JUMPI PUSH2 0x3001 DUP12 DUP4 DUP4 PUSH1 0x1 PUSH2 0x52E3 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 0x5BAF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x3053 DUP4 PUSH32 0x0 PUSH2 0x42D2 JUMP JUMPDEST SWAP1 POP DUP7 PUSH2 0x3066 JUMPI DUP1 SWAP7 POP PUSH1 0x1 SWAP6 POP PUSH2 0x30EA JUMP JUMPDEST DUP7 DUP2 EQ PUSH2 0x30E3 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 0x30EA JUMP JUMPDEST DUP6 PUSH1 0x1 ADD SWAP6 POP JUMPDEST POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x2F70 JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x314B 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 0x315F PUSH2 0x2E0C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x31BD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x31A5 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 0x31FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x31E4 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x3223 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4C31 JUMP JUMPDEST ISZERO PUSH2 0x1EF7 JUMPI PUSH2 0x1EF7 PUSH1 0x0 DUP10 DUP10 DUP10 DUP10 PUSH2 0x4EC8 JUMP JUMPDEST PUSH1 0x60 PUSH1 0xA PUSH2 0x3243 DUP4 PUSH2 0x5430 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 0x32A1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x327F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x32A1 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 0x328D JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x32CD JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x32AE 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 0x335D 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 0x339D 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B6F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x3415 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 0x34A7 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 PUSH26 0x496E76656E746F72793A2077726F6E67204E46542076616C7565 PUSH1 0x30 SHL 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 0x3511 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 PUSH24 0x125B9D995B9D1BDC9E4E881B9BDB8B5BDDDB995908139195 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x3590 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3551 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 0x3546 PUSH2 0x2E0C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x3590 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B6F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x3601 JUMPI PUSH2 0x35E0 DUP7 PUSH2 0x35D9 DUP8 PUSH32 0x0 PUSH2 0x42D2 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x42E8 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 0x3662 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 PUSH27 0x496E76656E746F72793A207472616E7366657220746F207A65726F PUSH1 0x28 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x366C PUSH2 0x2E0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x367A DUP8 DUP4 PUSH2 0x2E16 JUMP JUMPDEST SWAP1 POP PUSH2 0x368C DUP8 DUP8 DUP8 PUSH1 0x1 DUP6 PUSH1 0x0 PUSH2 0x4A95 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 0x5BAF 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x3719 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4C31 JUMP JUMPDEST ISZERO PUSH2 0x1923 JUMPI PUSH2 0x3727 DUP7 PUSH2 0x4E47 JUMP JUMPDEST ISZERO PUSH2 0x373F JUMPI PUSH2 0x373A DUP8 DUP8 DUP8 PUSH1 0x1 DUP9 PUSH2 0x4C37 JUMP JUMPDEST PUSH2 0x1923 JUMP JUMPDEST DUP3 ISZERO PUSH2 0x1923 JUMPI PUSH2 0x1923 DUP8 DUP8 DUP8 DUP8 PUSH2 0x550B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x37AA 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 PUSH27 0x496E76656E746F72793A207472616E7366657220746F207A65726F PUSH1 0x28 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 0x37EF 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B8F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x37F9 PUSH2 0x2E0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3807 DUP9 DUP4 PUSH2 0x2E16 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP7 DUP2 EQ PUSH2 0x3956 JUMPI PUSH1 0x0 DUP11 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3825 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x3838 DUP2 PUSH2 0x3309 JUMP JUMPDEST ISZERO PUSH2 0x3862 JUMPI PUSH2 0x385D DUP14 DUP14 DUP4 DUP14 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x384F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP11 PUSH2 0x493C JUMP JUMPDEST PUSH2 0x394D JUMP JUMPDEST PUSH2 0x388C DUP2 PUSH32 0x0 PUSH2 0x2DC1 JUMP JUMPDEST ISZERO PUSH2 0x19D8 JUMPI PUSH2 0x38B3 DUP14 DUP14 DUP4 DUP14 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x38A3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP11 PUSH1 0x1 PUSH2 0x4A95 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 0x5BAF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x0 PUSH2 0x390E DUP3 PUSH32 0x0 PUSH2 0x42D2 JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x3921 JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x394B JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x3944 JUMPI PUSH2 0x3934 DUP15 DUP15 DUP9 DUP9 PUSH2 0x4DA8 JUMP JUMPDEST SWAP5 POP PUSH1 0x1 SWAP4 SWAP3 SWAP1 SWAP3 ADD SWAP2 DUP5 PUSH2 0x394B JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x3810 JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x3976 JUMPI PUSH2 0x3969 DUP12 DUP12 DUP6 DUP6 PUSH2 0x4DA8 JUMP JUMPDEST DUP2 ADD PUSH2 0x3976 DUP12 DUP12 DUP4 PUSH2 0x4DFC JUMP JUMPDEST DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3992 PUSH2 0x2E0C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x39F0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x39D8 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 0x3A2F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3A17 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x3A56 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4C31 JUMP JUMPDEST ISZERO PUSH2 0x3A68 JUMPI PUSH2 0x3A68 DUP12 DUP12 DUP12 DUP12 DUP12 PUSH2 0x4EC8 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 0x3ACA 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 0x3AF4 DUP4 PUSH32 0x0 PUSH2 0x2DC1 JUMP JUMPDEST PUSH2 0x3B3D 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 0x3B4B DUP5 DUP5 PUSH1 0x1 PUSH1 0x0 PUSH2 0x52E3 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 0x5BAF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 PUSH2 0x3B85 PUSH2 0x2E0C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x3BCE DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4C31 JUMP JUMPDEST ISZERO PUSH2 0x2275 JUMPI PUSH2 0x3BDC DUP5 PUSH2 0x4E47 JUMP JUMPDEST ISZERO PUSH2 0x3BF5 JUMPI PUSH2 0x3BF0 PUSH1 0x0 DUP6 DUP6 PUSH1 0x1 DUP7 PUSH2 0x4C37 JUMP JUMPDEST PUSH2 0x2275 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2275 JUMPI PUSH2 0x2275 PUSH1 0x0 DUP6 DUP6 DUP6 PUSH2 0x550B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3C5D 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 0x3C78 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 0x3CA2 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 0x3E2E JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3CC0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x3CFD PUSH32 0x0 DUP3 PUSH2 0x2DC1 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x3D46 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 0x3D54 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x3D6D DUP9 DUP3 PUSH1 0x1 DUP1 PUSH2 0x52E3 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 0x5BAF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x3DBF DUP3 PUSH32 0x0 PUSH2 0x42D2 JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x3DD2 JUMPI DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x3E24 JUMP JUMPDEST DUP5 DUP2 EQ PUSH2 0x3E1D 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 0x3E24 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x3CAB 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 0x3E82 PUSH2 0x2E0C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x3EE0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3EC8 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 0x3F1F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3F07 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x3F46 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4C31 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3F56 JUMPI POP PUSH2 0x3F56 DUP7 PUSH2 0x4E47 JUMP JUMPDEST ISZERO PUSH2 0x3601 JUMPI PUSH2 0x3601 PUSH1 0x0 DUP8 DUP8 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x4EC8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FA4 DUP3 PUSH32 0x0 PUSH2 0x2DC1 JUMP JUMPDEST ISZERO PUSH2 0x3FF6 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 0x4067 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 0x4071 PUSH2 0x2E0C JUMP JUMPDEST SWAP1 POP PUSH2 0x407C DUP5 PUSH2 0x3309 JUMP JUMPDEST ISZERO PUSH2 0x4091 JUMPI PUSH2 0x408C DUP6 DUP6 DUP6 PUSH2 0x51F9 JUMP JUMPDEST PUSH2 0x40F4 JUMP JUMPDEST PUSH2 0x40BB DUP5 PUSH32 0x0 PUSH2 0x2DC1 JUMP JUMPDEST ISZERO PUSH2 0x19D8 JUMPI PUSH2 0x40CD DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x52E3 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 0x5BAF 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x4141 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4C31 JUMP JUMPDEST ISZERO PUSH2 0x1AA7 JUMPI PUSH2 0x1AA7 PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 PUSH2 0x4C37 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 0x155F 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 PUSH27 0x125B9D995B9D1BDC9E4E881B9BDB8B595E1A5CDD1A5B99C8139195 PUSH1 0x2A SHL 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 0x41F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4209 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 0x421F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x22FF 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x1A95 SWAP1 DUP5 SWAP1 PUSH2 0x5674 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42DD DUP3 PUSH2 0x502D 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 0x437E PUSH2 0x2E0C 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 0x43E2 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 PUSH24 0x125B9D995B9D1BDC9E4E881CD95B198B585C1C1C9BDD985B PUSH1 0x42 SHL 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 0x445A PUSH2 0x5857 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 0x44BE DUP2 PUSH32 0x0 PUSH2 0x2DC1 JUMP JUMPDEST ISZERO PUSH2 0x4510 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 0x457A 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 0x4582 PUSH2 0x2E0C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x45B7 DUP2 PUSH2 0x3309 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 0x45F8 JUMPI POP DUP1 DUP5 EQ JUMPDEST PUSH2 0x4637 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B8F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4641 PUSH2 0x2E0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 EQ PUSH2 0x3A68 JUMPI PUSH1 0x0 DUP12 DUP12 DUP4 DUP2 DUP2 LT PUSH2 0x465B 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 0x46CF 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 0x46DD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP PUSH1 0x0 DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x46F4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP PUSH2 0x4706 DUP3 PUSH2 0x3309 JUMP JUMPDEST ISZERO PUSH2 0x47B1 JUMPI PUSH2 0x4716 DUP4 DUP4 DUP4 PUSH2 0x51F9 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x4763 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4C31 JUMP JUMPDEST ISZERO PUSH2 0x47AC JUMPI PUSH2 0x47AC 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 0x4C37 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x4900 JUMP JUMPDEST PUSH2 0x47DB DUP3 PUSH32 0x0 PUSH2 0x2DC1 JUMP JUMPDEST ISZERO PUSH2 0x19D8 JUMPI PUSH2 0x47ED DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x52E3 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 0x5BAF 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x4860 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4C31 JUMP JUMPDEST ISZERO PUSH2 0x47AC JUMPI PUSH2 0x486E DUP4 PUSH2 0x4E47 JUMP JUMPDEST ISZERO PUSH2 0x48BD JUMPI PUSH2 0x48B8 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 0x4C37 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x47AC JUMP JUMPDEST PUSH2 0x47AC 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 0x550B SWAP3 POP POP POP JUMP JUMPDEST POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x4646 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 0x497C 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B6F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x49C6 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 0x4A3E 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 0x3601 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 0x4AE7 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 PUSH26 0x496E76656E746F72793A2077726F6E67204E46542076616C7565 PUSH1 0x30 SHL 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 0x4B51 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 PUSH24 0x125B9D995B9D1BDC9E4E881B9BDB8B5BDDDB995908139195 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x4BD0 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x4B91 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 0x4B86 PUSH2 0x2E0C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x4BD0 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5B6F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x1923 JUMPI PUSH2 0x4BFB DUP8 DUP8 PUSH1 0x1 PUSH2 0x4DFC JUMP JUMPDEST PUSH2 0x1923 DUP8 DUP8 PUSH2 0x4C2A DUP9 PUSH32 0x0 PUSH2 0x42D2 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x4DA8 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 0x4C56 PUSH2 0x2E0C 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 0x4CD0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4CB8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4CFD 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 0x4D20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4D34 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 0x4D4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1AA7 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 0x2275 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 0x1A95 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB 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 0x4EB5 JUMPI INVALID JUMPDEST DUP3 DUP1 ISZERO PUSH2 0x4EBF 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 0x4EE7 PUSH2 0x2E0C 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 0x4F60 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4F48 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 0x4F9F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4F87 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 0x4FDB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4FC3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x5008 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 0x4D20 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 0x506F JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x508A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0xF3993D11 PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x155F JUMPI POP PUSH2 0x155F DUP3 PUSH2 0x59BA JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x50A5 PUSH2 0x5A3E 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 0x5118 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 0x5126 JUMPI SWAP2 POP PUSH2 0x15FB SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x51E5 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 0x51B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x51CC 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 0x51E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x51F3 JUMPI SWAP2 POP PUSH2 0x15FB SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x5243 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 0x52A9 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 0x5335 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 PUSH26 0x496E76656E746F72793A2077726F6E67204E46542076616C7565 PUSH1 0x30 SHL 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 0x5396 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 0x2275 JUMPI PUSH1 0x0 PUSH2 0x53E1 DUP5 PUSH32 0x0 PUSH2 0x42D2 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 0x5455 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 0x1562 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x546D JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0x5459 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x5486 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 0x54B1 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 0x5502 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 0x54E0 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x54BD 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 0x552A PUSH2 0x2E0C 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 0x559D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5585 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x55CA 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 0x55EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5600 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 0x5616 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x2275 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 0x5687 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x4C31 JUMP JUMPDEST PUSH2 0x56D8 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 0x5715 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x56F6 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 0x5777 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 0x577C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x57FB JUMPI DUP1 MLOAD ISZERO PUSH2 0x57F6 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x57A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x57F6 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 0x1AA7 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x584E 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 0x58C3 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 0x58DA JUMPI PUSH2 0x58D0 PUSH2 0x5A4A JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x59B6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x59A0 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x5925 PUSH2 0x5A3E 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 0x5973 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5987 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 0x599D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x59AD JUMPI PUSH2 0x58D0 PUSH2 0x5A4A 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 0x59EB JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x6CDB3D13 PUSH1 0xE1 SHL EQ JUMPDEST DUP1 PUSH2 0x5A06 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x3A24D07 PUSH1 0xE2 SHL EQ JUMPDEST DUP1 PUSH2 0x5A21 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x4E72E23 PUSH1 0xE1 SHL EQ JUMPDEST DUP1 PUSH2 0x155F 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 0x5A5D PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x5B06 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 0x5A9B JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x5AE1 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x5AB4 JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x5AE1 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x5AE1 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5AE1 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5AC6 JUMP JUMPDEST POP PUSH2 0x5AED SWAP3 SWAP2 POP PUSH2 0x5AF1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x5AED JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5AF2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x5B15 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x5B21 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID 0x4A CODECOPY 0xDC MOD 0xD4 0xC0 0xDB 0xC6 0x4B PUSH17 0xAF90FD698A233A518AA5D07E595D983B8C SDIV 0x26 0xC8 0xF7 0xFB 0xC3 0xD5 DUP2 PUSH9 0xC5AE7397731D063D5B 0xBF RETURNDATASIZE PUSH6 0x7854427343F4 0xC0 DUP4 0x24 0xF PUSH27 0xACAA2D0F62496E76656E746F72793A206E6F6E2D617070726F7665 PUSH5 0x2073656E64 PUSH6 0x720000496E76 PUSH6 0x6E746F72793A KECCAK256 PUSH10 0x6E636F6E73697374656E PUSH21 0x206172726179730000DDF252AD1BE2C89B69C2B068 0xFC CALLDATACOPY DUP14 0xAA SWAP6 0x2B 0xA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x49 CALLER 0xB3 CALLVALUE 0xC1 SWAP16 0xB0 0xC2 DUP6 0xB9 CALLDATALOAD 0x4E EXP PUSH31 0xB102B3C322E6349F8B8B0ADEA5A4B3E7134364736F6C634300070600330000 ",
              "sourceMap": "1397:5159:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3377:341:11;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3377:341:11;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2178:212:26;;;;;;;;;;;;;;;;-1:-1:-1;2178:212:26;-1:-1:-1;;;;;;2178:212:26;;:::i;:::-;;;;;;;;;;;;;;;;;;2706:98:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4890:377;;;;;;;;;;;;;;;;-1:-1:-1;4890:377:20;;:::i;:::-;;;;-1:-1:-1;;;;;4890:377:20;;;;;;;;;;;;;;3861:995;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3861:995:20;;;;;;;;:::i;:::-;;5031:263:26;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5031:263:26;;;;;;;;;;;;;;;-1:-1:-1;;;5031:263:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5031:263:26;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5031:263:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5031:263:26;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5031:263:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5031:263:26;;;;;;;;;;-1:-1:-1;5031:263:26;;-1:-1:-1;5031:263:26;-1:-1:-1;5031:263:26;:::i;2565:110::-;;;;;;;;;;;;;;;;-1:-1:-1;2565:110:26;;:::i;1556:624:21:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1556:624:21;;;;;;;;;;;;;:::i;5314:268:20:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5314:268:20;;;;;;;;;;;;;;;;;:::i;9096:302::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9096:302:20;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9096:302:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9096:302:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9096:302:20;;;;;;;;-1:-1:-1;9096:302:20;;-1:-1:-1;;;;;9096:302:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9096:302:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9096:302:20;;;;;;;;-1:-1:-1;9096:302:20;;-1:-1:-1;;;;;9096:302:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9096:302:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9096:302:20;;-1:-1:-1;9096:302:20;;-1:-1:-1;;;;;9096:302:20:i;3861:149:26:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3861:149:26;;;;;;;;:::i;5629:271:20:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5629:271:20;;;;;;;;;;;;;;;;;:::i;4117:161:26:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4117:161:26;;;;;;;;;;;;;;;-1:-1:-1;;;4117:161:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4117:161:26;;;;;;;;;;-1:-1:-1;4117:161:26;;-1:-1:-1;4117:161:26;-1:-1:-1;4117:161:26;:::i;3762:435:11:-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3762:435:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3762:435:11;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3762:435:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3762:435:11;;;;;;;;;;-1:-1:-1;3762:435:11;;-1:-1:-1;3762:435:11;-1:-1:-1;3762:435:11;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2855:126:26;;;;;;;;;;;;;;;;-1:-1:-1;2855:126:26;;:::i;544:193:35:-;;;;;;;;;;;;;;;;-1:-1:-1;544:193:35;-1:-1:-1;;;;;544:193:35;;:::i;552:29:10:-;;;:::i;4697:227:26:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4697:227:26;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4697:227:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4697:227:26;;;;;;;;;;-1:-1:-1;4697:227:26;;-1:-1:-1;4697:227:26;-1:-1:-1;4697:227:26;:::i;10251:167:20:-;;;;;;;;;;;;;;;;-1:-1:-1;10251:167:20;;:::i;3621:206::-;;;;;;;;;;;;;;;;-1:-1:-1;3621:206:20;-1:-1:-1;;;;;3621:206:20;;:::i;1137:481:7:-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1137:481:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1137:481:7;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1137:481:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1137:481:7;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1137:481:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1137:481:7;;;;;;;;;;-1:-1:-1;1137:481:7;;-1:-1:-1;1137:481:7;-1:-1:-1;1137:481:7;:::i;588:214:10:-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;588:214:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;588:214:10;;;;;;;;;;-1:-1:-1;588:214:10;;-1:-1:-1;588:214:10;-1:-1:-1;588:214:10;:::i;2235:1961:21:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2235:1961:21;;;;;;;;;;;;;;;-1:-1:-1;;;2235:1961:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2235:1961:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2235:1961:21;;;;;;;;-1:-1:-1;2235:1961:21;;-1:-1:-1;;;;;2235:1961:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2235:1961:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2235:1961:21;;-1:-1:-1;2235:1961:21;;-1:-1:-1;;;;;2235:1961:21:i;4385:205:26:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4385:205:26;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4385:205:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4385:205:26;;;;;;;;;;-1:-1:-1;4385:205:26;;-1:-1:-1;4385:205:26;-1:-1:-1;4385:205:26;:::i;1114:94:2:-;;;:::i;2846:102:20:-;;;:::i;694:120:1:-;;;;;;;;;;;;;;;;-1:-1:-1;694:120:1;-1:-1:-1;;;;;694:120:1;;:::i;929:185::-;;;:::i;9574:188:20:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9574:188:20;;;;;;;;;;:::i;339:40:1:-;;;;;;;;;;;;;;;;-1:-1:-1;339:40:1;-1:-1:-1;;;;;339:40:1;;:::i;4905:122:11:-;;;;;;;;;;;;;;;;-1:-1:-1;4905:122:11;;:::i;5947:300:20:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5947:300:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5947:300:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5947:300:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5947:300:20;;-1:-1:-1;5947:300:20;;-1:-1:-1;;;;;5947:300:20:i;5788:282:11:-;;;;;;;;;;;;;;;;-1:-1:-1;5788:282:11;;:::i;2430:511:7:-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2430:511:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2430:511:7;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2430:511:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2430:511:7;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2430:511:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2430:511:7;;;;;;;;;;-1:-1:-1;2430:511:7;;-1:-1:-1;2430:511:7;-1:-1:-1;2430:511:7;:::i;6460:94:26:-;;;:::i;5071:254:11:-;;;;;;;;;;;;;;;;-1:-1:-1;5071:254:11;;:::i;2990:218:20:-;;;;;;;;;;;;;;;;-1:-1:-1;2990:218:20;;:::i;3479:146:26:-;;;;;;;;;;;;;;;;-1:-1:-1;3479:146:26;;:::i;5535:286::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5535:286:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5535:286:26;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5535:286:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5535:286:26;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5535:286:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5535:286:26;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5535:286:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5535:286:26;;;;;;;;;;-1:-1:-1;5535:286:26;;-1:-1:-1;5535:286:26;-1:-1:-1;5535:286:26;:::i;9809:264:20:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9809:264:20;;;;;;;;;;:::i;8159:890::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8159:890:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8159:890:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8159:890:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8159:890:20;;-1:-1:-1;8159:890:20;;-1:-1:-1;;;;;8159:890:20:i;4251:1412:21:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4251:1412:21;;;;;;;;;;;;;;;-1:-1:-1;;;4251:1412:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4251:1412:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4251:1412:21;;-1:-1:-1;4251:1412:21;;-1:-1:-1;;;;;4251:1412:21:i;1448:197:2:-;;;;;;;;;;;;;;;;-1:-1:-1;1448:197:2;-1:-1:-1;;;;;1448:197:2;;:::i;6294:1689:20:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6294:1689:20;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6294:1689:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6294:1689:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6294:1689:20;;-1:-1:-1;6294:1689:20;;-1:-1:-1;;;;;6294:1689:20:i;3377:341:11:-;3461:7;-1:-1:-1;;;;;3488:19:11;;3480:55;;;;;-1:-1:-1;;;3480:55:11;;;;;;;;;;;;-1:-1:-1;;;3480:55:11;;;;;;;;;;;;;;;3550:44;:2;3572:21;3550;:44::i;:::-;3546:128;;;3633:11;;;;:7;:11;;;;;;-1:-1:-1;;;;;3617:38:11;;;;;;:46;;3662:1;3617:46;;;3658:1;3617:46;3610:53;;;;;;3546:128;-1:-1:-1;3691:13:11;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;3691:20:11;;;;;;;;;;3377:341;;;;;:::o;2178:212:26:-;2263:4;-1:-1:-1;;;;;;2286:57:26;;-1:-1:-1;;;2286:57:26;;:97;;;2347:36;2371:11;2347:23;:36::i;:::-;2279:104;;2178:212;;;;:::o;2706:98:20:-;2792:5;2785:12;;;;;;;;-1:-1:-1;;2785:12:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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:20;;5027:77;;;;;-1:-1:-1;;;5027:77:20;;;;;;;;;;;;-1:-1:-1;;;5027:77:20;;;;;;;;;;;;;;;-1:-1:-1;;;5118:34:20;;:39;5114:147;;-1:-1:-1;;5180:22:20;;;;:13;:22;;;;;;-1:-1:-1;;;;;5180:22:20;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:20;;;;;;;;;;;;-1:-1:-1;;;3983:50:20;;;;;;;;;;;;;;;4082:5;-1:-1:-1;;;;;4107:18:20;;;;;;;;4099:55;;;;;-1:-1:-1;;;4099:55:20;;;;;;;;;;;;-1:-1:-1;;;4099:55:20;;;;;;;;;;;;;;;4172:41;4186:12;4200;:10;:12::i;:::-;4172:13;:41::i;:::-;4164:84;;;;;-1:-1:-1;;;4164:84:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4164:84:20;;;;;;;;;;;;;;;-1:-1:-1;;;;;4262:16:20;;4258:542;;-1:-1:-1;;;4298:34:20;;:39;4294:178;;4417:16;;;;:7;:16;;;;;-1:-1:-1;;;;;4436:21:20;;4417:40;;4294:178;4258:542;;;-1:-1:-1;;;4533:34:20;;4585:29;;;4581:168;;4695:16;;;;:7;:16;;;;;:39;;;4581:168;-1:-1:-1;4762:22:20;;;;:13;:22;;;;;:27;;-1:-1:-1;;;;;;4762:27:20;-1:-1:-1;;;;;4762:27:20;;;;;4258:542;4841:7;4837:2;-1:-1:-1;;;;;4814:35:20;4823:12;-1:-1:-1;;;;;4814:35:20;;;;;;;;;;;3861:995;;;;:::o;5031:263:26:-;5212:28;5227:12;:10;:12::i;:::-;5212:14;:28::i;:::-;5250:37;5265:2;5269:3;;5250:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5250:37:26;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5274:6:26;;-1:-1:-1;5274:6:26;;;;5250:37;;;5274:6;;5250:37;5274:6;5250:37;;;;;;;;;-1:-1:-1;;5250:37:26;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5282:4:26;;-1:-1:-1;5282:4:26;;;;5250:37;;5282:4;;;;5250:37;;;;;;;;;-1:-1:-1;5250:14:26;;-1:-1:-1;;;5250:37:26:i;:::-;5031:263;;;;;;;:::o;2565:110::-;2628:13;2660:8;2665:2;2660:4;:8::i;1556:624:21:-;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:21;;;-1:-1:-1;;;;;;;;;;;2000:30:21;2023:1;;2000:30;1873:234;;;2061:35;;;-1:-1:-1;;;2061:35:21;;;;;;;;;;;;;;;;;;;;;;;;;;;1873:234;2159:1;-1:-1:-1;;;;;2122:51:21;2145:4;-1:-1:-1;;;;;2122:51:21;2137:6;-1:-1:-1;;;;;2122:51:21;-1:-1:-1;;;;;;;;;;;2163:2:21;2167:5;2122:51;;;;;;;;;;;;;;;;;;;;;;;;1556:624;;;;;:::o;5314:268:20:-;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:26:-;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:20:-;5760:133;5787:4;5805:2;5821:5;5760:133;;;;;;;;;;;;5879:4;5760:13;:133::i;4117:161:26:-;4211:28;4226:12;:10;:12::i;4211:28::-;4249:22;4260:2;4264:6;;4249:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4249:10:26;;-1:-1:-1;;;4249:22:26:i;3762:435:11:-;3877:16;3913:27;;;3905:70;;;;;-1:-1:-1;;;3905:70:11;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3905:70:11;;;;;;;;;;;;;;;3986:25;4028:6;4014:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4014:28:11;;3986:56;;4058:9;4053:112;4073:18;;;4053:112;;4126:28;4136:6;;4143:1;4136:9;;;;;;;;;;;;;-1:-1:-1;;;;;4136:9:11;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:11;3762:435;-1:-1:-1;;;;;3762:435:11:o;2855:126:26:-;2926:7;2952:22;2961:12;2952:8;:22::i;544:193:35:-;631:4;667:19;-1:-1:-1;;;;;654:32:35;:9;-1:-1:-1;;;;;654:32:35;;:76;;;;711:18;-1:-1:-1;;;;;690:40:35;:9;-1:-1:-1;;;;;690:40:35;;647:83;;544:193;;;:::o;552:29:10:-;;;;;;;;;;;;;;;-1:-1:-1;;552:29:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4697:227:26:-;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:26;;-1:-1:-1;;;4887:30:26:i;10251:167:20:-;10365:7;10391:20;10405:5;10391:13;:20::i;3621:206::-;3700:7;-1:-1:-1;;;;;3727:24:20;;3719:60;;;;;-1:-1:-1;;;3719:60:20;;;;;;;;;;;;-1:-1:-1;;;3719:60:20;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3796:24:20;;;;;:12;:24;;;;;;;3621:206::o;1137:481:7:-;1301:31;1319:12;:10;:12::i;:::-;1301:17;:31::i;:::-;1359:8;1392:23;;;:51;;;;-1:-1:-1;1419:24:7;;;1392:51;1384:90;;;;;-1:-1:-1;;;1384:90:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;1489:9;1484:128;1509:6;1504:1;:11;1484:128;;1536:65;1577:8;;1586:1;1577:11;;;;;;;;;;;;;-1:-1:-1;;;;;1577:11:7;1590:7;;1598:1;1590:10;;;;;;;;;;;;;1550:6;;1557:1;1550:9;;;;;;;;;;;;;-1:-1:-1;;;;;1550:9:7;-1:-1:-1;;;;;1536:40:7;;;:65;;;;;:::i;:::-;1517:3;;1484:128;;;;1137:481;;;;;;;:::o;588:214:10:-;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:10;;;;;;;;-1:-1:-1;759:36:10;;-1:-1:-1;;;;759:36:10;588:214;;:::o;2235:1961:21:-;2400:10;;2438:13;;2428:23;;2420:66;;;;;-1:-1:-1;;;2420:66:21;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2420:66:21;;;;;;;;;;;;;;;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:21;;;-1:-1:-1;;;;;;;;;;;3016:30:21;3039:1;;3016:30;3064:24;3091:50;:2;3119:21;3091:27;:50::i;:::-;3064:77;-1:-1:-1;3163:19:21;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:21;;3545:30;;;;;3503:16;3329:390;;;3677:19;;;;;3329:390;2878:947;;-1:-1:-1;2715:3:21;;2686:1149;;;-1:-1:-1;3849:19:21;;3845:277;;3884:65;3909:4;3915:14;3931:17;3884:24;:65::i;:::-;-1:-1:-1;;;;;4080:18:21;;;;;;:12;:18;;;;;:31;;3963:30;;;4080:31;;;;;;3845:277;4173:1;-1:-1:-1;;;;;4137:52:21;4159:4;-1:-1:-1;;;;;4137:52:21;4151:6;-1:-1:-1;;;;;4137:52:21;-1:-1:-1;;;;;;;;;;;4177:3:21;4182:6;4137:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2235:1961;;;;;;;;;:::o;4385:205:26:-;4517:28;4532:12;:10;:12::i;4517:28::-;4555;4561:2;4565:5;4572:4;;4555:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4578:4:26;;-1:-1:-1;4555:5:26;;-1:-1:-1;;4555:28:26:i;:::-;4385:205;;;;:::o;1114:94:2:-;1169:7;1195:6;-1:-1:-1;;;;;1195:6:2;1114:94;:::o;2846:102:20:-;2934:7;2927:14;;;;;;;;-1:-1:-1;;2927:14:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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:20:-;9712:43;9736:8;9746;9712:23;:43::i;339:40:1:-;;;;;;;;;;;;;;;:::o;4905:122:11:-;4977:4;5000:20;:2;:18;:20::i;5947:300:20:-;6105:135;6132:4;6150:2;6166:5;6185:4;6226;6105:13;:135::i;5788:282:11:-;5861:7;5884:44;:2;5906:21;5884;:44::i;:::-;5880:184;;;5992:1;5967:11;;;:7;:11;;;;;;-1:-1:-1;;;;;5951:43:11;;:51;;6001:1;5951:51;;;5997:1;5951:51;5944:58;;;;;;5880:184;-1:-1:-1;6040:13:11;;;;:9;:13;;;;;;6033:20;;2430:511:7;2599:31;2617:12;:10;:12::i;2599:31::-;2657:8;2690:26;;;:55;;;;-1:-1:-1;2720:25:7;;;2690:55;2682:94;;;;;-1:-1:-1;;;2682:94:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;2791:9;2786:149;2811:6;2806:1;:11;2786:149;;2857:9;;2867:1;2857:12;;;;;;;;;;;;;-1:-1:-1;;;;;2857:12:7;-1:-1:-1;;;;;2838:45:7;;2892:4;2899:8;;2908:1;2899:11;;;;;;;;;;;;;-1:-1:-1;;;;;2899:11:7;2912:8;;2921:1;2912:11;;;;;;;;;;;;;2838:86;;;;;;;;;;;;;-1:-1:-1;;;;;2838:86:7;;;;;;-1:-1:-1;;;;;2838:86:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2819:3;;;;;2786:149;;6460:94:26;6502:16;6537:10;:8;:10::i;:::-;6530:17;;6460:94;:::o;5071:254:11:-;5148:7;5175:47;:5;5200:21;5175:24;:47::i;:::-;5167:81;;;;;-1:-1:-1;;;5167:81:11;;;;;;;;;;;;-1:-1:-1;;;5167:81:11;;;;;;;;;;;;;;;5265:53;:5;5296:21;5265:30;:53::i;2990:218:20:-;3140:1;3112:14;;;:7;:14;;;;;;3063:13;;-1:-1:-1;;;;;3096:46:20;3088:86;;;;;-1:-1:-1;;;3088:86:20;;;;;;;;;;;;-1:-1:-1;;;3088:86:20;;;;;;;;;;;;;;;3191:10;3195:5;3191:3;:10::i;3479:146:26:-;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:20:-;9995:4;10022:44;10045:10;10057:8;10022:22;:44::i;:::-;10015:51;9809:264;-1:-1:-1;;;9809:264:20:o;8159:890::-;8378:14;8395:12;:10;:12::i;:::-;8378:29;-1:-1:-1;;;;;;8425:16:20;;8417:56;;;;;-1:-1:-1;;;8417:56:20;;;;;;;;;;;;-1:-1:-1;;;8417:56:20;;;;;;;;;;;;;;;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:20;8790:4;-1:-1:-1;;;;;8781:22:20;-1:-1:-1;;;;;;;;;;;8781:22:20;;;;;;;;;8646:234;8924:2;-1:-1:-1;;;;;8895:43:20;8918:4;-1:-1:-1;;;;;8895:43:20;8910:6;-1:-1:-1;;;;;8895:43:20;-1:-1:-1;;;;;;;;;;;8928:2:20;8932:5;8895:43;;;;;;;;;;;;;;;;;;;;;;;;8952:15;:2;-1:-1:-1;;;;;8952:13:20;;:15::i;:::-;8948:95;;;8983:49;9006:4;9012:2;9016;9020:5;9027:4;8983:22;:49::i;4251:1412:21:-;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:21;4459:13;4508:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4508:21:21;;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:21;;;-1:-1:-1;;;;;;;;;;;4790:33:21;4813:1;;4790:33;4837:24;4864:53;:5;4895:21;4864:30;:53::i;:::-;4837:80;-1:-1:-1;4935:19:21;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:21;;4607:812;;;-1:-1:-1;5433:19:21;;5429:157;;5468:65;5493:4;5499:14;5515:17;5468:24;:65::i;:::-;-1:-1:-1;;;;;5547:18:21;;;;;;:12;:18;;;;;:28;;;;;;;5429:157;5637:1;-1:-1:-1;;;;;5601:55:21;5623:4;-1:-1:-1;;;;;5601:55:21;5615:6;-1:-1:-1;;;;;5601:55:21;-1:-1:-1;;;;;;;;;;;5641:6:21;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:20:-;-1:-1:-1;;;;;6444:16:20;;6436:56;;;;;-1:-1:-1;;;6436:56:20;;;;;;;;;;;;-1:-1:-1;;;6436:56:20;;;;;;;;;;;;;;;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:20;6614:13;6663:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6663:21:20;;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:20;6954:4;-1:-1:-1;;;;;6945:25:20;-1:-1:-1;;;;;;;;;;;6945:25:20;;;;;;;;;6984:24;7011:53;:5;7042:21;7011:30;:53::i;:::-;6984:80;-1:-1:-1;7082:19:20;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:20;;6762:812;;;-1:-1:-1;7588:19:20;;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:20;7808:4;-1:-1:-1;;;;;7780:53:20;7794:12;:10;:12::i;:::-;-1:-1:-1;;;;;7780:53:20;-1:-1:-1;;;;;;;;;;;7818:6:20;7826;7780:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7847:15;:2;-1:-1:-1;;;;;7847:13:20;;: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:12:-;968:4;-1:-1:-1;;;991:12:12;;:17;;;;:77;;;1017:46;1042:20;1017:24;:46::i;:::-;1012:51;;;:56;;;875:200;-1:-1:-1;;875:200:12:o;1156:216:21:-;1241:4;-1:-1:-1;;;;;;1264:61:21;;-1:-1:-1;;;1264:61:21;;:101;;;1329:36;1353:11;1329:23;:36::i;5956:183:26:-;6061:15;6095:37;:35;:37::i;7572:158:11:-;7656:4;7688:6;-1:-1:-1;;;;;7680:14:11;:4;-1:-1:-1;;;;;7680:14:11;;7679:44;;;-1:-1:-1;;;;;;;7699:16:11;;;;;;;: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:20;-1:-1:-1;;;;;17938:16:20;;17930:52;;;;;-1:-1:-1;;;17930:52:20;;;;;;;;;;;;-1:-1:-1;;;17930:52:20;;;;;;;;;;;;;;;18009:10;;18047:13;;18037:23;;18029:66;;;;;-1:-1:-1;;;18029:66:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18029:66:20;;;;;;;;;;;;;;;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:20;;;18550:1;;-1:-1:-1;;;;;;;;;;;18533:28:20;18550:1;;18533:28;18579:24;18606:50;:2;18634:21;18606:27;:50::i;:::-;18579:77;-1:-1:-1;18678:19:20;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:20;-1:-1:-1;;;;;18910:29:20;;;;;;;;;;;;;: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:20;;18200:1207;;;-1:-1:-1;19421:19:20;;19417:247;;19456:25;;;;:9;:25;;;;;;;;-1:-1:-1;;;;;19456:29:20;;;;;;;;;;;:50;;;;;;19520:25;;;:9;:25;;;;;:46;;;;;;19624:16;;:12;:16;;;;;:29;;19580:30;;;19624:29;;;;;19417:247;-1:-1:-1;;;;;19679:56:20;;19715:1;19693:12;:10;:12::i;:::-;-1:-1:-1;;;;;19679:56:20;-1:-1:-1;;;;;;;;;;;19723:3:20;19728:6;19679:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19749:15;:2;-1:-1:-1;;;;;19749:13:20;;:15::i;:::-;19745:108;;;19780:62;19816:1;19820:2;19824:3;19829:6;19837:4;19780:27;:62::i;808:159:10:-;865:13;921:15;938:20;:2;:18;:20::i;:::-;904:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;904:55:10;;;;;;;;;;;;;;;;;;;-1:-1:-1;;904:55:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;890:70;;808:159;;;:::o;762:107:12:-;-1:-1:-1;;;845:12:12;:17;;762:107::o;5798:474:21:-;5944:10;5936:44;;;;;-1:-1:-1;;;5936:44:21;;;;;;;;;;;;-1:-1:-1;;;5936:44:21;;;;;;;;;;;;;;;5998:10;5990:53;;;;;-1:-1:-1;;;5990:53:21;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5990:53:21;;;;;;;;;;;;;;;6053:15;6071:13;;;:9;:13;;;;;;;;-1:-1:-1;;;;;6071:19:21;;;;;;;;;;6108:16;;;;6100:58;;;;;-1:-1:-1;;;6100:58:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;6168:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;6168:19:21;;;;;;;;;;;6190:15;;;;6168:37;;;6243:13;;;:9;:13;;-1:-1:-1;6243:13:21;;;:22;;;;;;;;5798:474::o;6278:792::-;6449:5;6458:1;6449:10;6441:49;;;;;-1:-1:-1;;;6441:49:21;;;;;;;;;;;;-1:-1:-1;;;6441:49:21;;;;;;;;;;;;;;;6500:13;6516:11;;;:7;:11;;;;;;-1:-1:-1;;;;;6545:31:21;;;;;;;6537:68;;;;;-1:-1:-1;;;6537:68:21;;;;;;;;;;;;-1:-1:-1;;;6537:68:21;;;;;;;;;;;;;;;6620:10;6615:163;;-1:-1:-1;;;6655:34:21;;:39;;;;6654:78;;-1:-1:-1;6715:17:21;;;;:13;:17;;;;;;-1:-1:-1;;;;;6715:17:21;6699:12;:10;:12::i;:::-;-1:-1:-1;;;;;6699:33:21;;6654:78;6646:121;;;;;-1:-1:-1;;;6646:121:21;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6646:121:21;;;;;;;;;;;;;;;6787:11;;;;:7;:11;;;;;-1:-1:-1;;;6787:30:21;;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:21;;;;;;:12;:18;;;;;7033:20;;-1:-1:-1;;7033:20:21;;;6828:236;6278:792;;;;;;:::o;10847:737:20:-;-1:-1:-1;;;;;11014:16:20;;11006:56;;;;;-1:-1:-1;;;11006:56:20;;;;;;;;;;;;-1:-1:-1;;;11006:56:20;;;;;;;;;;;;;;;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:20;11243:4;-1:-1:-1;;;;;11234:25:20;-1:-1:-1;;;;;;;;;;;11234:25:20;;;;;;;;;11303:2;-1:-1:-1;;;;;11274:42:20;11297:4;-1:-1:-1;;;;;11274:42:20;11289:6;-1:-1:-1;;;;;11274:42:20;-1:-1:-1;;;;;;;;;;;11307:5:20;11314:1;11274:42;;;;;;;;;;;;;;;;;;;;;;;;11330:15;:2;-1:-1:-1;;;;;11330:13:20;;: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:20;;11964:56;;;;;-1:-1:-1;;;11964:56:20;;;;;;;;;;;;-1:-1:-1;;;11964:56:20;;;;;;;;;;;;;;;12047:10;;12085:13;;12075:23;;12067:66;;;;;-1:-1:-1;;;12067:66:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;12067:66:20;;;;;;;;;;;;;;;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:20;12687:4;-1:-1:-1;;;;;12678:22:20;-1:-1:-1;;;;;;;;;;;12678:22:20;;;;;;;;;12718:24;12745:50;:2;12773:21;12745:27;:50::i;:::-;12718:77;-1:-1:-1;12817:19:20;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:20;;13207:30;;;;;13165:16;12983:398;;;13339:19;;;;;12983:398;12532:955;;-1:-1:-1;12361:3:20;;12332:1165;;;-1:-1:-1;13511:19:20;;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:20;13778:4;-1:-1:-1;;;;;13750:50:20;13764:12;:10;:12::i;:::-;-1:-1:-1;;;;;13750:50:20;-1:-1:-1;;;;;;;;;;;13788:3:20;13793:6;13750:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13814:15;:2;-1:-1:-1;;;;;13814:13:20;;: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:20;;14319:52;;;;;-1:-1:-1;;;14319:52:20;;;;;;;;;;;;-1:-1:-1;;;14319:52:20;;;;;;;;;;;;;;;14389:47;:5;14414:21;14389:24;:47::i;:::-;14381:81;;;;;-1:-1:-1;;;14381:81:20;;;;;;;;;;;;-1:-1:-1;;;14381:81:20;;;;;;;;;;;;;;;14473:29;14482:2;14486:5;14493:1;14496:5;14473:8;:29::i;:::-;14518:31;;14543:5;;-1:-1:-1;;;;;14518:31:20;;;14535:1;;-1:-1:-1;;;;;;;;;;;14518:31:20;14535:1;;14518:31;-1:-1:-1;;;;;14564:54:20;;14601:1;14579:12;:10;:12::i;:::-;-1:-1:-1;;;;;14564:54:20;-1:-1:-1;;;;;;;;;;;14609:5:20;14616:1;14564:54;;;;;;;;;;;;;;;;;;;;;;;;14632:15;:2;-1:-1:-1;;;;;14632:13:20;;: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:20;;15147:52;;;;;-1:-1:-1;;;15147:52:20;;;;;;;;;;;;-1:-1:-1;;;15147:52:20;;;;;;;;;;;;;;;15227:13;;15210:14;15227:13;15276:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15276:21:20;;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:20;;;;;;;;;;;;-1:-1:-1;;;15462:81:20;;;;;;;;;;;;;;;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:20;;;15648:1;;-1:-1:-1;;;;;;;;;;;15631:31:20;15648:1;;15631:31;15676:24;15703:53;:5;15734:21;15703:30;:53::i;:::-;15676:80;-1:-1:-1;15774:19:20;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:20;;;;;;;;;:50;;;;;;16058:25;;;:9;:25;;;;;;:46;;;;;;;;-1:-1:-1;;16143:16:20;15924:363;;;16249:19;;;;;15924:363;-1:-1:-1;;15404:3:20;;15375:936;;;-1:-1:-1;16321:25:20;;;;:9;:25;;;;;;;;-1:-1:-1;;;;;16321:29:20;;;;;;;;;;;:50;;;;;;16381:25;;;:9;:25;;;;;:46;;;;;;16437:16;;;:12;:16;;;;;:26;;;;;;16321:29;16493:12;:10;:12::i;:::-;-1:-1:-1;;;;;16479:59:20;-1:-1:-1;;;;;;;;;;;16523:6:20;16531;16479:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16552:15;:2;-1:-1:-1;;;;;16552:13:20;;: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:11:-;6989:7;7017:54;:12;7049:21;7017:31;:54::i;:::-;7016:55;7008:95;;;;;-1:-1:-1;;;7008:95:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7120:23:11;;;;:9;:23;;;;;;-1:-1:-1;;;;;7120:23:11;;6918:232::o;16857:727:20:-;-1:-1:-1;;;;;17007:16:20;;16999:52;;;;;-1:-1:-1;;;16999:52:20;;;;;;;;;;;;-1:-1:-1;;;16999:52:20;;;;;;;;;;;;;;;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:20;;;17315:1;;-1:-1:-1;;;;;;;;;;;17298:28:20;17315:1;;17298:28;17185:218;17418:49;;;;;;;;;;;;;;-1:-1:-1;;;;;17418:49:20;;;;17449:1;;17418:49;;;;-1:-1:-1;;;;;;;;;;;17418:49:20;;;;;;;;;17481:15;:2;-1:-1:-1;;;;;17481:13:20;;:15::i;:::-;17477:101;;;17512:55;17543:1;17547:2;17551;17555:5;17562:4;17512:22;:55::i;5369:235:11:-;5439:7;5490:14;;;:7;:14;;;;;;-1:-1:-1;;;;;5524:19:11;;5516:59;;;;;-1:-1:-1;;;5516:59:11;;;;;;;;;;;;-1:-1:-1;;;5516:59:11;;;;;;;;;;;;;;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:6;573:58;;;-1:-1:-1;;;;;573:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;573:58:6;-1:-1:-1;;;573:58:6;;;538:94;;566:5;;538:27;:94::i;1081:190:12:-;1183:7;1218:46;1243:20;1218:24;:46::i;:::-;1217:47;1209:5;:55;1202:62;;1081:190;;;;:::o;7076:305:21:-;7292:23;;;;:9;:23;;;;;;;;-1:-1:-1;;;;;7292:29:21;;;;;;;;;;;: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:11:-;4326:14;4343:12;:10;:12::i;:::-;4326:29;;4385:6;-1:-1:-1;;;;;4373:18:11;:8;-1:-1:-1;;;;;4373:18:11;;;4365:55;;;;;-1:-1:-1;;;4365:55:11;;;;;;;;;;;;-1:-1:-1;;;4365:55:11;;;;;;;;;;;;;;;-1:-1:-1;;;;;4430:18:11;;;;;;;:10;:18;;;;;;;;:28;;;;;;;;;;;;;:39;;-1:-1:-1;;4430:39:11;;;;;;;;;;4484:42;;;;;;;;;;;;;;;;;4232:301;;;:::o;6145:180:26:-;6248:16;6283:35;:33;:35::i;:::-;6276:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6276:42:26;;-1:-1:-1;;;;6145:180:26;:::o;6518:394:11:-;6603:54;:12;6635:21;6603:31;:54::i;:::-;6602:55;6594:95;;;;;-1:-1:-1;;;6594:95:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;6742:1;6707:23;;;:9;:23;;;;;;-1:-1:-1;;;;;6707:23:11;:37;6699:80;;;;;-1:-1:-1;;;6699:80:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;6815:12;:10;:12::i;:::-;6789:23;;;;:9;:23;;;;;:38;;-1:-1:-1;;;;;;6789:38:11;-1:-1:-1;;;;;6789:38:11;;;;;;;;;;6874:30;6789:23;6874:28;:30::i;:::-;6842:63;;6860:12;6842:63;;;;;;;;;;6518:394;:::o;20029:1526:20:-;20228:10;20263:20;;;:47;;;;-1:-1:-1;20287:23:20;;;20263:47;20255:90;;;;;-1:-1:-1;;;20255:90:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;20255:90:20;;;;;;;;;;;;;;;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:20;20443:26;;20505:1;-1:-1:-1;;;;;20491:16:20;:2;-1:-1:-1;;;;;20491:16:20;;;20483:52;;;;;-1:-1:-1;;;20483:52:20;;;;;;;;;;;;-1:-1:-1;;;20483:52:20;;;;;;;;;;;;;;;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:20;;;;20747:1;;20716:49;;;;-1:-1:-1;;;;;;;;;;;20716:49:20;;;;;;;;;20787:15;:2;-1:-1:-1;;;;;20787:13:20;;:15::i;:::-;20783:117;;;20826:55;20857:1;20861:2;20865;20869:5;20876:4;;20826:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20826:22:20;;-1:-1:-1;;;20826:55:20: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:20;;;21058:1;;-1:-1:-1;;;;;;;;;;;21041:28:20;21058:1;;21041:28;21092:45;;;;;;21135:1;21092:45;;;;;;-1:-1:-1;;;;;21092:45:20;;;;21123:1;;21092:45;;;;-1:-1:-1;;;;;;;;;;;21092:45:20;;;;;;;;;21159:15;:2;-1:-1:-1;;;;;21159:13:20;;: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:20;;-1:-1:-1;;;21257:51:20:i;:::-;21198:235;;;21363:47;21393:1;21397:2;21401;21405:4;;21363:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21363:21:20;;-1:-1:-1;;;21363:47:20:i;20920:619::-;20395:1154;;;20424:3;;;;;20395:1154;;4568:164:11;-1:-1:-1;;;;;4693:22:11;;;4670:4;4693:22;;;:10;:22;;;;;;;;:32;;;;;;;;;;;;;;;4568:164::o;22822:575:20:-;22992:10;22984:53;;;;;-1:-1:-1;;;22984:53:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22984:53:20;;;;;;;;;;;;;;;23055:10;23047:44;;;;;-1:-1:-1;;;23047:44:20;;;;;;;;;;;;-1:-1:-1;;;23047:44:20;;;;;;;;;;;;;;;23101:15;23119:13;;;:9;:13;;;;;;;;-1:-1:-1;;;;;23119:19:20;;;;;;;;;;23156:16;;;;23148:58;;;;;-1:-1:-1;;;23148:58:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;23228:2;-1:-1:-1;;;;;23220:10:20;:4;-1:-1:-1;;;;;23220:10:20;;23216:175;;23246:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;23246:19:20;;;;;;;;;;;23268:15;;;;23246:37;;;23354:17;;;;;;;;;:26;;;;;;;-1:-1:-1;22822:575:20:o;23403:768::-;23598:5;23607:1;23598:10;23590:49;;;;;-1:-1:-1;;;23590:49:20;;;;;;;;;;;;-1:-1:-1;;;23590:49:20;;;;;;;;;;;;;;;23649:13;23665:11;;;:7;:11;;;;;;-1:-1:-1;;;;;23694:31:20;;;;;;;23686:68;;;;;-1:-1:-1;;;23686:68:20;;;;;;;;;;;;-1:-1:-1;;;23686:68:20;;;;;;;;;;;;;;;23769:10;23764:163;;-1:-1:-1;;;23804:34:20;;:39;;;;23803:78;;-1:-1:-1;23864:17:20;;;;:13;:17;;;;;;-1:-1:-1;;;;;23864:17:20;23848:12;:10;:12::i;:::-;-1:-1:-1;;;;;23848:33:20;;23803:78;23795:121;;;;;-1:-1:-1;;;23795:121:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23795:121:20;;;;;;;;;;;;;;;23936:11;;;;:7;:11;;;;;-1:-1:-1;;;;;23950:20:20;;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:8:-;1229:20;1275:8;;;913:377::o;8201:317:11:-;-1:-1:-1;;;;;;;;8378:43:11;;1559:10;8422:12;:10;:12::i;:::-;8436:4;8442:2;8446:5;8453:4;8378:80;;;;;;;;;;;;;-1:-1:-1;;;;;8378:80:11;;;;;;-1:-1:-1;;;;;8378:80:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8378:80:11;-1:-1:-1;;;;;;8378:101:11;;8370:141;;;;;-1:-1:-1;;;8370:141:11;;;;;;;;;;;;;;;;;;;;;;;;;;;24564:434:20;24743:2;-1:-1:-1;;;;;24735:10:20;:4;-1:-1:-1;;;;;24735:10:20;;24731:261;;24834:23;;;;:9;:23;;;;;;;;-1:-1:-1;;;;;24834:29:20;;;;;;;;;;;:39;;;;;;;24944:27;;;;;;;:37;;;;;;;24564:434::o;24177:381::-;24324:2;-1:-1:-1;;;;;24316:10:20;:4;-1:-1:-1;;;;;24316:10:20;;24312:240;;-1:-1:-1;;;;;24415:18:20;;;;;;;:12;:18;;;;;;:28;;;;;;;24515:16;;;;;;:26;;;;;;24177:381;;;:::o;25210:871::-;25374:90;;;-1:-1:-1;;;25374:90:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25374:90:20;-1:-1:-1;;;25374:90:20;;;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:20:o;9002:389:11:-;-1:-1:-1;;;;;;;;9217:48:11;;1721:10;9266:12;:10;:12::i;:::-;9280:4;9286:3;9291:6;9299:4;9217:87;;;;;;;;;;;;;-1:-1:-1;;;;;9217:87:11;;;;;;-1:-1:-1;;;;;9217:87:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1277:158:12;1427:1;1396:3;:26;;;;1390:33;-1:-1:-1;;1389:39:12;;1277:158::o;2183:352:20:-;2268:4;-1:-1:-1;;;;;;2303:40:20;;-1:-1:-1;;;2303:40:20;;:104;;-1:-1:-1;;;;;;;2359:48:20;;-1:-1:-1;;;2359:48:20;2303:104;:173;;;-1:-1:-1;;;;;;;2423:53:20;;-1:-1:-1;;;2423:53:20;2303:173;:225;;;;2492:36;2516:11;2492:23;:36::i;743:904:35:-;796:15;851:10;796:15;896:27;:25;:27::i;:::-;871:52;;958:18;-1:-1:-1;;;;;937:40:35;:9;-1:-1:-1;;;;;937:40:35;;:76;;;;994:19;-1:-1:-1;;;;;981:32:35;:9;-1:-1:-1;;;;;981:32:35;;937:76;933:166;;;1082:6;-1:-1:-1;1075:13:35;;-1:-1:-1;1075:13:35;933:166;-1:-1:-1;;;;;1496:22:35;;1509:9;1496:22;;;;:78;;;1522:18;-1:-1:-1;;;;;1522:33:35;;1556:6;1564:9;1522:52;;;;;;;;;;;;;-1:-1:-1;;;;;1522:52:35;;;;;;-1:-1:-1;;;;;1522:52:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1522:52:35;1496:78;1492:122;;;1597:6;-1:-1:-1;1590:13:35;;-1:-1:-1;1590:13:35;1492:122;-1:-1:-1;1631:9:35;-1:-1:-1;743:904:35;:::o;21690:437:20:-;21809:10;21801:44;;;;;-1:-1:-1;;;21801:44:20;;;;;;;;;;;;-1:-1:-1;;;21801:44:20;;;;;;;;;;;;;;;21855:14;21872:13;;;:9;:13;;;;;;21915:14;;;21947:18;;;21939:57;;;;;-1:-1:-1;;;21939:57:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;22006:13;;;;:9;:13;;;;;;;;:25;;;;22094:9;:13;;;;;-1:-1:-1;;;;;22094:17:20;;;;;;;;;-1:-1:-1;22094:17:20;;;:26;;;;;;;21690:437::o;22133:683::-;22269:5;22278:1;22269:10;22261:49;;;;;-1:-1:-1;;;22261:49:20;;;;;;;;;;;;-1:-1:-1;;;22261:49:20;;;;;;;;;;;;;;;22328:11;;;;:7;:11;;;;;;:16;22320:58;;;;;-1:-1:-1;;;22320:58:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;22389:11;;;;:7;:11;;;;;-1:-1:-1;;;;;22403:20:20;;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:20;;;;;;;;;22738:29;;;;;;22783:12;:16;;;;;;22781:18;;;;;;;-1:-1:-1;22133:683:20;;;;:::o;276:546:9:-;339:13;368:10;364:51;;-1:-1:-1;394:10:9;;;;;;;;;;;;-1:-1:-1;;;394:10:9;;;;;;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:9;-1:-1:-1;654:5:9;;-1:-1:-1;562:39:9;-1:-1:-1;;;627:10:9;;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;;;;;701:49:9;;;;;;;;-1:-1:-1;772:2:9;764:10;;;;669:116;;;-1:-1:-1;808:6:9;276:546;-1:-1:-1;;;;276:546:9:o;26499:335:20:-;-1:-1:-1;;;;;;;;26668:36:20;;;26705:12;:10;:12::i;:::-;26719:4;26725:5;26732:4;26668:69;;;;;;;;;;;;;-1:-1:-1;;;;;26668:69:20;;;;;;-1:-1:-1;;;;;26668:69:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26668:69:20;-1:-1:-1;;;;;;26668:106:20;;26647:180;;;;;-1:-1:-1;;;26647:180:20;;;;;;;;;;;;;;;;;;;;;;;;;;;1147:870:6;1272:5;1296:19;-1:-1:-1;;;;;1296:17:6;;;:19::i;:::-;1288:58;;;;;-1:-1:-1;;;1288:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1417:12;1431:17;1452:6;-1:-1:-1;;;;;1452:11:6;1464:8;1452:21;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1452:21:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1416:57;;;;1487:7;1483:528;;;1514:11;;:16;1510:122;;1569:4;1558:24;;;;;;;;;;;;;;;-1:-1:-1;1558:24:6;1550:67;;;;;-1:-1:-1;;;1550:67:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1483:528;;;1720:11;;1716:95;;1756:40;;;-1:-1:-1;;;1756:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;1716:95;1938:4;1932:11;1982:4;1975;1971:2;1967:13;1960:27;1653:670:35;1704:14;;1758:10;-1:-1:-1;;;;;1803:18:35;1782:40;;;;:76;;;1839:19;-1:-1:-1;;;;;1826:32:35;:9;-1:-1:-1;;;;;1826:32:35;;1782:76;1778:197;;;1927:37;:35;:37::i;:::-;1920:44;;;;;;;1778:197;-1:-1:-1;;;;;2122:22:35;;2135:9;2122:22;;;;:99;;;2148:18;-1:-1:-1;;;;;2148:33:35;;2182:27;:25;:27::i;:::-;2211:9;2148:73;;;;;;;;;;;;;-1:-1:-1;;;;;2148:73:35;;;;;;-1:-1:-1;;;;;2148:73:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2148:73:35;2122:99;2118:174;;;2244:37;:35;:37::i;2118:174::-;2308:8;;2301:15;;;;;1653:670;;;:::o;2760:444:11:-;2845:4;-1:-1:-1;;;;;;2880:40:11;;-1:-1:-1;;;2880:40:11;;:97;;-1:-1:-1;;;;;;;2936:41:11;;-1:-1:-1;;;2936:41:11;2880:97;:165;;;-1:-1:-1;;;;;;;2993:52:11;;-1:-1:-1;;;2993:52:11;2880:165;:240;;;-1:-1:-1;;;;;;;3061:59:11;;-1:-1:-1;;;3061:59:11;2880:240;:317;;;-1:-1:-1;;;;;;;;3136:61:11;-1:-1:-1;;;3136:61:11;;2760:444::o;103:519:34:-;-1:-1:-1;;585:14:34;581:23;568:37;564:2;560:46;;536:80::o;628:149::-;706:14;;739:31;-1:-1:-1;;749:20:34;;706:14;;;739:31;:::i;:::-;732:38;;;;628:149;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:363:36;;;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:36;;;346:25;;;;;-1:-1:-1;144:233:36: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/ERC1155721/mocks/ERC1155721InventoryPausableMock.sol": {
        "ERC1155721InventoryPausableMock": {
          "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": false,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "Paused",
              "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"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "Unpaused",
              "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": [],
              "name": "pause",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "paused",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "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": "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": "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": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "unpause",
              "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": "60e06040523480156200001157600080fd5b50604051620061ec380380620061ec833981810160405260608110156200003757600080fd5b50805160208083015160409384015184518086018652601f81527f45524331313535373231496e76656e746f72794275726e61626c654d6f636b008185015285518087018752600481526324a72b2160e11b94810194909452600080546001600160a81b03191633610100810291909117825596519596939592948794879487949193919291859184918491849182918c918c918b9182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160601b0319606091821b811660a05291901b16608052801580159062000120575061010081105b62000172576040805162461bcd60e51b815260206004820152601c60248201527f496e76656e746f72793a2077726f6e67206d61736b206c656e67746800000000604482015290519081900360640190fd5b60c05282516200018a90600690602086019062000211565b508151620001a090600790602085019062000211565b50505050505050620001b881620001c560201b60201c565b50505050505050620002bd565b6001600160a01b0381166000818152600b6020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262000249576000855562000294565b82601f106200026457805160ff191683800117855562000294565b8280016001018555821562000294579182015b828111156200029457825182559160200191906001019062000277565b50620002a2929150620002a6565b5090565b5b80821115620002a25760008155600101620002a7565b60805160601c60a05160601c60c051615e6b62000381600039806114ea528061204552806122135280612286528061261352806126775280612a2c5280612c7e5280612e9a5280612f665280613153528061326a528061349e528061351652806138685280613b855280613db05280613f78528061422452806147555280614d385280614fea528061506c5280615b5b525080611b5a528061447c5280615766525080611b95528061444152806144d4528061573c52806157c75250615e6b6000f3fe608060405234801561001057600080fd5b50600436106102945760003560e01c80637e518ec811610167578063bd85b039116100ce578063e8ab9ccc11610087578063e8ab9ccc146110a7578063e985e9c514611205578063f242432a14611233578063f2472965146112fc578063f2fde38b146113ad578063f3993d11146113d357610294565b8063bd85b03914610f1d578063c3666c3614610f3a578063c4c2bfdc14611048578063c7778baa14611050578063c87b56dd1461106d578063d0011d9d1461108a57610294565b8063983b2d5611610120578063983b2d5614610dba5780639865027514610de0578063a22cb46514610de8578063aa271e1a14610e16578063adebf6f214610e3c578063b88d4fde14610e5957610294565b80637e518ec814610b7e5780638053493414610bec5780638456cb5914610d1f5780638832e6e314610d275780638da5cb5b14610daa57806395d89b4114610db257610294565b806340c10f191161020b5780635b2bd79e116101c45780635b2bd79e146109935780635c975abb1461099b5780635cfa9297146109a35780636352211e14610a2d57806370a0823114610a4a57806373c8a95814610a7057610294565b806340c10f191461076257806342842e0e1461078e5780634684d7e9146107c45780634e1273f414610842578063510b515814610950578063572b6c051461096d57610294565b80630d6a5bbb1161025d5780630d6a5bbb146103f65780630e89341c14610514578063124d91e51461053157806323b872dd146105635780632eb2c2d6146105995780633f4ba83a1461075a57610294565b8062fdd58e1461029957806301ffc9a7146102d757806306fdde0314610312578063081812fc1461038f578063095ea7b3146103c8575b600080fd5b6102c5600480360360408110156102af57600080fd5b506001600160a01b03813516906020013561148d565b60408051918252519081900360200190f35b6102fe600480360360208110156102ed57600080fd5b50356001600160e01b031916611573565b604080519115158252519081900360200190f35b61031a6115a0565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561035457818101518382015260200161033c565b50505050905090810190601f1680156103815780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ac600480360360208110156103a557600080fd5b5035611637565b604080516001600160a01b039092168252519081900360200190f35b6103f4600480360360408110156103de57600080fd5b506001600160a01b0381351690602001356116d4565b005b6103f46004803603608081101561040c57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561043657600080fd5b82018360208201111561044857600080fd5b803590602001918460208302840111600160201b8311171561046957600080fd5b919390929091602081019035600160201b81111561048657600080fd5b82018360208201111561049857600080fd5b803590602001918460208302840111600160201b831117156104b957600080fd5b919390929091602081019035600160201b8111156104d657600080fd5b8201836020820111156104e857600080fd5b803590602001918460018302840111600160201b8311171561050957600080fd5b5090925090506118aa565b61031a6004803603602081101561052a57600080fd5b5035611965565b6103f46004803603606081101561054757600080fd5b506001600160a01b038135169060208101359060400135611970565b6103f46004803603606081101561057957600080fd5b506001600160a01b03813581169160208101359091169060400135611988565b6103f4600480360360a08110156105af57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156105e257600080fd5b8201836020820111156105f457600080fd5b803590602001918460208302840111600160201b8311171561061557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561066457600080fd5b82018360208201111561067657600080fd5b803590602001918460208302840111600160201b8311171561069757600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156106e657600080fd5b8201836020820111156106f857600080fd5b803590602001918460018302840111600160201b8311171561071957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061199b945050505050565b6103f46119b7565b6103f46004803603604081101561077857600080fd5b506001600160a01b0381351690602001356119d1565b6103f4600480360360608110156107a457600080fd5b506001600160a01b038135811691602081013590911690604001356119fc565b6103f4600480360360408110156107da57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561080457600080fd5b82018360208201111561081657600080fd5b803590602001918460208302840111600160201b8311171561083757600080fd5b509092509050611a0f565b6109006004803603604081101561085857600080fd5b810190602081018135600160201b81111561087257600080fd5b82018360208201111561088457600080fd5b803590602001918460208302840111600160201b831117156108a557600080fd5b919390929091602081019035600160201b8111156108c257600080fd5b8201836020820111156108d457600080fd5b803590602001918460208302840111600160201b831117156108f557600080fd5b509092509050611a57565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561093c578181015183820152602001610924565b505050509050019250505060405180910390f35b6103ac6004803603602081101561096657600080fd5b5035611b4b565b6102fe6004803603602081101561098357600080fd5b50356001600160a01b0316611b56565b61031a611bcf565b6102fe611c5d565b6103f4600480360360808110156109b957600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b8111156109ef57600080fd5b820183602082011115610a0157600080fd5b803590602001918460018302840111600160201b83111715610a2257600080fd5b509092509050611c66565b6103ac60048036036020811015610a4357600080fd5b5035611cb3565b6102c560048036036020811015610a6057600080fd5b50356001600160a01b0316611cbe565b6103f460048036036060811015610a8657600080fd5b810190602081018135600160201b811115610aa057600080fd5b820183602082011115610ab257600080fd5b803590602001918460208302840111600160201b83111715610ad357600080fd5b919390929091602081019035600160201b811115610af057600080fd5b820183602082011115610b0257600080fd5b803590602001918460208302840111600160201b83111715610b2357600080fd5b919390929091602081019035600160201b811115610b4057600080fd5b820183602082011115610b5257600080fd5b803590602001918460208302840111600160201b83111715610b7357600080fd5b509092509050611d31565b6103f460048036036020811015610b9457600080fd5b810190602081018135600160201b811115610bae57600080fd5b820183602082011115610bc057600080fd5b803590602001918460018302840111600160201b83111715610be157600080fd5b509092509050611e1e565b6103f460048036036060811015610c0257600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610c2c57600080fd5b820183602082011115610c3e57600080fd5b803590602001918460208302840111600160201b83111715610c5f57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b811115610cae57600080fd5b820183602082011115610cc057600080fd5b803590602001918460208302840111600160201b83111715610ce157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611e9a945050505050565b6103f4611ead565b6103f460048036036060811015610d3d57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b811115610d6c57600080fd5b820183602082011115610d7e57600080fd5b803590602001918460018302840111600160201b83111715610d9f57600080fd5b509092509050611ec0565b6103ac611f15565b61031a611f29565b6103f460048036036020811015610dd057600080fd5b50356001600160a01b0316611f8a565b6103f4611fa1565b6103f460048036036040811015610dfe57600080fd5b506001600160a01b0381351690602001351515611fff565b6102fe60048036036020811015610e2c57600080fd5b50356001600160a01b0316612009565b6102fe60048036036020811015610e5257600080fd5b503561201e565b6103f460048036036080811015610e6f57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b811115610ea957600080fd5b820183602082011115610ebb57600080fd5b803590602001918460018302840111600160201b83111715610edc57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612029945050505050565b6102c560048036036020811015610f3357600080fd5b503561203d565b6103f460048036036060811015610f5057600080fd5b810190602081018135600160201b811115610f6a57600080fd5b820183602082011115610f7c57600080fd5b803590602001918460208302840111600160201b83111715610f9d57600080fd5b919390929091602081019035600160201b811115610fba57600080fd5b820183602082011115610fcc57600080fd5b803590602001918460208302840111600160201b83111715610fed57600080fd5b919390929091602081019035600160201b81111561100a57600080fd5b82018360208201111561101c57600080fd5b803590602001918460208302840111600160201b8311171561103d57600080fd5b5090925090506120b4565b61031a6121fc565b6102c56004803603602081101561106657600080fd5b503561220b565b61031a6004803603602081101561108357600080fd5b50356122aa565b6103f4600480360360208110156110a057600080fd5b503561231d565b6103f4600480360360808110156110bd57600080fd5b810190602081018135600160201b8111156110d757600080fd5b8201836020820111156110e957600080fd5b803590602001918460208302840111600160201b8311171561110a57600080fd5b919390929091602081019035600160201b81111561112757600080fd5b82018360208201111561113957600080fd5b803590602001918460208302840111600160201b8311171561115a57600080fd5b919390929091602081019035600160201b81111561117757600080fd5b82018360208201111561118957600080fd5b803590602001918460208302840111600160201b831117156111aa57600080fd5b919390929091602081019035600160201b8111156111c757600080fd5b8201836020820111156111d957600080fd5b803590602001918460018302840111600160201b831117156111fa57600080fd5b509092509050612331565b6102fe6004803603604081101561121b57600080fd5b506001600160a01b038135811691602001351661234c565b6103f4600480360360a081101561124957600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b81111561128857600080fd5b82018360208201111561129a57600080fd5b803590602001918460018302840111600160201b831117156112bb57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061235f945050505050565b6103f46004803603604081101561131257600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561133c57600080fd5b82018360208201111561134e57600080fd5b803590602001918460208302840111600160201b8311171561136f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612374945050505050565b6103f4600480360360208110156113c357600080fd5b50356001600160a01b0316612386565b6103f4600480360360608110156113e957600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561141c57600080fd5b82018360208201111561142e57600080fd5b803590602001918460208302840111600160201b8311171561144f57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506123f6945050505050565b60006001600160a01b0383166114e4576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a207a65726f206164647265737360481b604482015290519081900360640190fd5b61150e827f0000000000000000000000000000000000000000000000000000000000000000612409565b15611548576000828152600460205260409020546001600160a01b0384811691161461153b57600061153e565b60015b60ff16905061156d565b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216630a216a2b60e31b148061159857506115988261242f565b90505b919050565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561162c5780601f106116015761010080835404028352916020019161162c565b820191906000526020600020905b81548152906001019060200180831161160f57829003601f168201915b505050505090505b90565b6000818152600460205260408120546001600160a01b03811661169f576040805162461bcd60e51b815260206004820152601b60248201527a125b9d995b9d1bdc9e4e881b9bdb8b595e1a5cdd1a5b99c8139195602a1b604482015290519081900360640190fd5b600160a01b8116156116ca5750506000818152600960205260409020546001600160a01b031661159b565b600091505061159b565b60008181526004602052604090205480611733576040805162461bcd60e51b815260206004820152601b60248201527a125b9d995b9d1bdc9e4e881b9bdb8b595e1a5cdd1a5b99c8139195602a1b604482015290519081900360640190fd5b806001600160a01b038481169082161415611790576040805162461bcd60e51b8152602060048201526018602482015277125b9d995b9d1bdc9e4e881cd95b198b585c1c1c9bdd985b60421b604482015290519081900360640190fd5b6117a18161179c612454565b61245e565b6117e0576040805162461bcd60e51b815260206004820152601e6024820152600080516020615dd6833981519152604482015290519081900360640190fd5b6001600160a01b03841661181a57600160a01b8216156118155760008381526004602052604090206001600160a01b03821690555b611863565b600160a01b821780831461183a5760008481526004602052604090208190555b50600083815260096020526040902080546001600160a01b0319166001600160a01b0386161790555b82846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b6118ba6118b5612454565b6124aa565b61195c8787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061251792505050565b50505050505050565b6060611598826128cf565b6119786129a2565b6119838383836129ed565b505050565b6119906129a2565b611983838383612add565b6119a36129a2565b6119b08585858585612afa565b5050505050565b6119c76119c2612454565b612b07565b6119cf612bcb565b565b6119dc6118b5612454565b6119f88282604051806020016040528060008152506000612c23565b5050565b611a046129a2565b611983838383612db6565b611a1a6118b5612454565b61198383838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612dd392505050565b6060838214611a9b576040805162461bcd60e51b815260206004820152601e6024820152600080516020615df6833981519152604482015290519081900360640190fd5b60008467ffffffffffffffff81118015611ab457600080fd5b50604051908082528060200260200182016040528015611ade578160200160208202803683370190505b50905060005b808614611b4157611b22878783818110611afa57fe5b905060200201356001600160a01b0316868684818110611b1657fe5b9050602002013561148d565b828281518110611b2e57fe5b6020908102919091010152600101611ae4565b5095945050505050565b60006115988261314b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148061159857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b600a805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015611c555780601f10611c2a57610100808354040283529160200191611c55565b820191906000526020600020905b815481529060010190602001808311611c3857829003601f168201915b505050505081565b60005460ff1681565b611c716118b5612454565b6119b085858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506131e592505050565b600061159882613327565b60006001600160a01b038216611d15576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a207a65726f206164647265737360481b604482015290519081900360640190fd5b506001600160a01b031660009081526008602052604090205490565b611d3c6119c2612454565b848381148015611d4b57508082145b611d9c576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114611e1457611e0c888883818110611db557fe5b905060200201356001600160a01b0316858584818110611dd157fe5b90506020020135888885818110611de457fe5b905060200201356001600160a01b03166001600160a01b031661338f9092919063ffffffff16565b600101611d9f565b5050505050505050565b611e296119c2612454565b611e35600a8383615ccc565b507f04b1dc5c136a3ce9fded8db0ce3d3366c58764ec3a8e4c2b9e52e4ddfe5ebbf7828260405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a15050565b611ea26129a2565b6119838383836133e1565b611eb86119c2612454565b6119cf61368a565b611ecb6118b5612454565b611f0f848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250612c23915050565b50505050565b60005461010090046001600160a01b031690565b60078054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561162c5780601f106116015761010080835404028352916020019161162c565b611f956119c2612454565b611f9e816136c8565b50565b6000611fab612454565b9050611fb6816124aa565b6001600160a01b0381166000818152600b6020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b6119f88282613714565b600b6020526000908152604090205460ff1681565b6000611598826137f0565b6120316129a2565b611f0f848484846137fa565b6000612069827f0000000000000000000000000000000000000000000000000000000000000000612409565b1561209f576000828152600460205260409020546001600160a01b031615612092576001612095565b60005b60ff16905061159b565b5060008181526003602052604090205461159b565b6120bf6119c2612454565b8483811480156120ce57508082145b61211f576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114611e145785858281811061213557fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a8581811061216057fe5b905060200201356001600160a01b031687878681811061217c57fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b1580156121d957600080fd5b505af11580156121ed573d6000803e3d6000fd5b50505050806001019050612122565b6060612206613808565b905090565b6000612237827f0000000000000000000000000000000000000000000000000000000000000000612409565b612280576040805162461bcd60e51b8152602060048201526015602482015274125b9d995b9d1bdc9e4e881b9bdd08185b88139195605a1b604482015290519081900360640190fd5b611598827f000000000000000000000000000000000000000000000000000000000000000061384c565b6000818152600460205260409020546060906001600160a01b0316612314576040805162461bcd60e51b815260206004820152601b60248201527a125b9d995b9d1bdc9e4e881b9bdb8b595e1a5cdd1a5b99c8139195602a1b604482015290519081900360640190fd5b61159882611965565b6123286119c2612454565b611f9e81613862565b61233c6118b5612454565b611e1488888888888888886139b7565b60006123588383613ce9565b9392505050565b6123676129a2565b6119b08585858585613d17565b61237c6129a2565b6119f88282613e87565b6123916119c2612454565b6000805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b0384811682810293909317808555604051939492900416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6123fe6129a2565b6119838383836140e2565b6000600160ff1b8316158015906123585750612424826143c5565b909216151592915050565b60006001600160e01b031982166318167c6d60e21b14806115985750611598826143d6565b6000612206614431565b6000816001600160a01b0316836001600160a01b031614806123585750506001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6001600160a01b0381166000908152600b602052604090205460ff16611f9e576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b03841661256c576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b8251825181146125b1576040805162461bcd60e51b815260206004820152601e6024820152600080516020615df6833981519152604482015290519081900360640190fd5b6000806000805b84811461278f5760008882815181106125cd57fe5b6020026020010151905060008883815181106125e557fe5b602002602001015190506125f8826137f0565b1561260d576126088b8383614591565b612785565b612637827f0000000000000000000000000000000000000000000000000000000000000000612409565b15612738576126498b8383600161467b565b60405182906001600160a01b038d1690600090600080516020615e16833981519152908290a4600061269b837f000000000000000000000000000000000000000000000000000000000000000061384c565b9050866126ae5780965060019550612732565b86811461272b57856002600089815260200190815260200160002060008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008282540192505081905550856003600089815260200190815260200160002060008282540192505081905550809650858501945060019550612732565b8560010195505b50612785565b6040805162461bcd60e51b815260206004820152601960248201527f496e76656e746f72793a206e6f74206120746f6b656e20696400000000000000604482015290519081900360640190fd5b50506001016125b8565b5082156127e45760008381526002602090815260408083206001600160a01b038c1680855290835281842080548701905586845260038352818420805487019055835260089091529020805491830191820190555b6001600160a01b03881660006127f8612454565b6001600160a01b0316600080516020615d968339815191528a8a604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561285657818101518382015260200161283e565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561289557818101518382015260200161287d565b5050505090500194505050505060405180910390a46128bc886001600160a01b03166147c8565b15611e1457611e146000898989896147ce565b6060600a6128dc836149bb565b604051602001808380546001816001161561010002031660029004801561293a5780601f1061291857610100808354040283529182019161293a565b820191906000526020600020905b815481529060010190602001808311612926575b5050825160208401908083835b602083106129665780518252601f199092019160209182019101612947565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529050919050565b60005460ff16156119cf576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60006129f7612454565b90506000612a05858361245e565b9050612a10846137f0565b15612a2657612a2185858584614a96565b612a8a565b612a50847f0000000000000000000000000000000000000000000000000000000000000000612409565b1561273857612a63858585846000614bd8565b60405184906000906001600160a01b03881690600080516020615e16833981519152908390a45b60006001600160a01b0316856001600160a01b0316836001600160a01b0316600080516020615db68339815191528787604051808381526020018281526020019250505060405180910390a45050505050565b611983838383604051806020016040528060008152506000614d8b565b6119b08585858585614ed3565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015612b4057600080fd5b505afa158015612b54573d6000803e3d6000fd5b505050506040513d6020811015612b6a57600080fd5b50516001600160a01b03828116911614611f9e576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b612bd36151ea565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612c06612454565b604080516001600160a01b039092168252519081900360200190a1565b6001600160a01b038416612c78576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b612ca2837f0000000000000000000000000000000000000000000000000000000000000000612409565b612ceb576040805162461bcd60e51b8152602060048201526015602482015274125b9d995b9d1bdc9e4e881b9bdd08185b88139195605a1b604482015290519081900360640190fd5b612cf984846001600061467b565b60405183906001600160a01b03861690600090600080516020615e16833981519152908290a46001600160a01b0384166000612d33612454565b6001600160a01b0316600080516020615db6833981519152866001604051808381526020018281526020019250505060405180910390a4612d7c846001600160a01b03166147c8565b15611f0f57612d8a84615238565b15612da357612d9e600085856001866152b9565b611f0f565b8015611f0f57611f0f60008585856153a2565b611983838383604051806020016040528060008152506001614d8b565b6001600160a01b038216612e28576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b805160008167ffffffffffffffff81118015612e4357600080fd5b50604051908082528060200260200182016040528015612e6d578160200160208202803683370190505b50905060008060005b848114612ff9576000868281518110612e8b57fe5b60200260200101519050612ec87f00000000000000000000000000000000000000000000000000000000000000008261240990919063ffffffff16565b612f11576040805162461bcd60e51b8152602060048201526015602482015274125b9d995b9d1bdc9e4e881b9bdd08185b88139195605a1b604482015290519081900360640190fd5b6001858381518110612f1f57fe5b602002602001018181525050612f38888260018061467b565b60405181906001600160a01b038a1690600090600080516020615e16833981519152908290a46000612f8a827f000000000000000000000000000000000000000000000000000000000000000061384c565b905084612f9d5780945060019350612fef565b848114612fe85760008581526002602090815260408083206001600160a01b038d16845282528083208054880190559682526003905294909420805490930190925560019183612fef565b8360010193505b5050600101612e76565b5060008281526002602090815260408083206001600160a01b038a1680855290835281842080548601905585845260038352818420805486019055808452600890925282208054870190559061304d612454565b6001600160a01b0316600080516020615d968339815191528887604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156130ab578181015183820152602001613093565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156130ea5781810151838201526020016130d2565b5050505090500194505050505060405180910390a4613111866001600160a01b03166147c8565b8015613121575061312186615238565b15613143576131436000878786604051806020016040528060008152506147ce565b505050505050565b6000613177827f0000000000000000000000000000000000000000000000000000000000000000612409565b156131c9576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b506000908152600560205260409020546001600160a01b031690565b6001600160a01b03841661323a576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b6000613244612454565b905061324f846137f0565b156132645761325f858585614591565b6132c7565b61328e847f0000000000000000000000000000000000000000000000000000000000000000612409565b15612738576132a0858585600061467b565b60405184906001600160a01b03871690600090600080516020615e16833981519152908290a45b604080518581526020810185905281516001600160a01b038089169360009391861692600080516020615db68339815191529281900390910190a4613314856001600160a01b03166147c8565b156119b0576119b06000868686866152b9565b6000818152600460205260408120546001600160a01b038116611598576040805162461bcd60e51b815260206004820152601b60248201527a125b9d995b9d1bdc9e4e881b9bdb8b595e1a5cdd1a5b99c8139195602a1b604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261198390849061550b565b815181518114613426576040805162461bcd60e51b815260206004820152601e6024820152600080516020615df6833981519152604482015290519081900360640190fd5b6000613430612454565b9050600061343e868361245e565b90506000806000805b86811461358157600089828151811061345c57fe5b6020026020010151905061346f816137f0565b15613498576134938b828b858151811061348557fe5b602002602001015189614a96565b613578565b6134c2817f0000000000000000000000000000000000000000000000000000000000000000612409565b15612738576134e88b828b85815181106134d857fe5b6020026020010151896001614bd8565b60405181906000906001600160a01b038e1690600080516020615e16833981519152908390a4600061353a827f000000000000000000000000000000000000000000000000000000000000000061384c565b90508561354d5780955060019450613576565b85811461356f5761355f8c87876156ee565b9450600193929092019184613576565b8460010194505b505b50600101613447565b5082156135b7576135938984846156ee565b6001600160a01b038916600090815260086020526040902080549183019182900390555b60006001600160a01b0316896001600160a01b0316866001600160a01b0316600080516020615d968339815191528b8b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561362b578181015183820152602001613613565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561366a578181015183820152602001613652565b5050505090500194505050505060405180910390a4505050505050505050565b6136926129a2565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612c06612454565b6001600160a01b0381166000818152600b6020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b600061371e612454565b9050806001600160a01b0316836001600160a01b03161415613782576040805162461bcd60e51b8152602060048201526018602482015277125b9d995b9d1bdc9e4e881cd95b198b585c1c1c9bdd985b60421b604482015290519081900360640190fd5b6001600160a01b03818116600081815260016020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b600160ff1b161590565b611f0f848484846001614d8b565b606061381261572e565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b6000613857826143c5565b198316905092915050565b61388c817f0000000000000000000000000000000000000000000000000000000000000000612409565b156138de576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b6000818152600560205260409020546001600160a01b031615613948576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206578697374696e6720636f6c6c656374696f6e0000604482015290519081900360640190fd5b613950612454565b600082815260056020526040902080546001600160a01b0319166001600160a01b0392909216919091179055613985816137f0565b1515817f4ebf8ad0df535ba5e487bc9cb27fe44120ca81c3a95d3eba79c0bd1df2ab2d5d60405160405180910390a350565b8685811480156139c657508084145b613a05576040805162461bcd60e51b815260206004820152601e6024820152600080516020615df6833981519152604482015290519081900360640190fd5b6000613a0f612454565b905060005b828114613cdc5760008b8b83818110613a2957fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b03161415613a9d576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b60008a8a84818110613aab57fe5b9050602002013590506000898985818110613ac257fe5b905060200201359050613ad4826137f0565b15613b7f57613ae4838383614591565b604080518381526020810183905281516001600160a01b0380871693600093918a1692600080516020615db68339815191529281900390910190a4613b31836001600160a01b03166147c8565b15613b7a57613b7a60008484848c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506152b992505050565b613cce565b613ba9827f0000000000000000000000000000000000000000000000000000000000000000612409565b1561273857613bbb838383600061467b565b60405182906001600160a01b03851690600090600080516020615e16833981519152908290a4604080518381526001602082015281516001600160a01b0380871693600093918a1692600080516020615db68339815191529281900390910190a4613c2e836001600160a01b03166147c8565b15613b7a57613c3c83615238565b15613c8b57613c866000848460018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506152b992505050565b613b7a565b613b7a600084848b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506153a292505050565b505050806001019050613a14565b5050505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6000613d21612454565b90506001600160a01b038516613d7c576040805162461bcd60e51b815260206004820152601b60248201527a496e76656e746f72793a207472616e7366657220746f207a65726f60281b604482015290519081900360640190fd5b6000613d88878361245e565b9050613d93856137f0565b15613daa57613da58787878785615891565b613e18565b613dd4857f0000000000000000000000000000000000000000000000000000000000000000612409565b1561273857613de8878787878560006159ea565b84866001600160a01b0316886001600160a01b0316600080516020615e1683398151915260405160405180910390a45b856001600160a01b0316876001600160a01b0316836001600160a01b0316600080516020615db68339815191528888604051808381526020018281526020019250505060405180910390a4613e75866001600160a01b03166147c8565b1561195c5761195c87878787876152b9565b6000613e91612454565b90506000613e9f848361245e565b835190915060008167ffffffffffffffff81118015613ebd57600080fd5b50604051908082528060200260200182016040528015613ee7578160200160208202803683370190505b50905060008060005b848114613fde576000888281518110613f0557fe5b602002602001015190506001858381518110613f1d57fe5b602002602001018181525050613f4a8a82878581518110613f3a57fe5b60200260200101518a6001614bd8565b60405181906000906001600160a01b038d1690600080516020615e16833981519152908390a46000613f9c827f000000000000000000000000000000000000000000000000000000000000000061384c565b905084613faf5780945060019350613fd4565b848114613fcd57613fc18b86866156ee565b80945060019350613fd4565b8360010193505b5050600101613ef0565b50811561401057613ff08883836156ee565b6001600160a01b0388166000908152600860205260409020805485900390555b60006001600160a01b0316886001600160a01b0316876001600160a01b0316600080516020615d968339815191528a87604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561408457818101518382015260200161406c565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156140c35781810151838201526020016140ab565b5050505090500194505050505060405180910390a45050505050505050565b6001600160a01b03821661413b576040805162461bcd60e51b815260206004820152601b60248201527a496e76656e746f72793a207472616e7366657220746f207a65726f60281b604482015290519081900360640190fd5b6000614145612454565b90506000614153858361245e565b835190915060008167ffffffffffffffff8111801561417157600080fd5b5060405190808252806020026020018201604052801561419b578160200160208202803683370190505b50905060008060005b84811461428b5760008882815181106141b957fe5b6020026020010151905060018583815181106141d157fe5b6020026020010181815250506141ed8b8b8360018b60016159ea565b808a6001600160a01b03168c6001600160a01b0316600080516020615e1683398151915260405160405180910390a46000614248827f000000000000000000000000000000000000000000000000000000000000000061384c565b90508461425b5780945060019350614281565b84811461427a5761426e8c8c8787615b82565b80945060019350614281565b8360010193505b50506001016141a4565b5081156142a95761429e89898484615b82565b6142a9898986615bd6565b876001600160a01b0316896001600160a01b03166142c5612454565b6001600160a01b0316600080516020615d968339815191528a87604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561432357818101518382015260200161430b565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561436257818101518382015260200161434a565b5050505090500194505050505060405180910390a4614389886001600160a01b03166147c8565b8015614399575061439988615238565b156143ba576143ba89898986604051806020016040528060008152506147ce565b505050505050505050565b6001610100919091031b6000190190565b60006001600160e01b031982166380ac58cd60e01b148061440757506001600160e01b03198216635b5e139f60e01b145b8061442257506001600160e01b0319821663f3993d1160e01b145b80611598575061159882615c21565b6000338161443d615ca5565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614806144b057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b156144be5791506116349050565b6001600160a01b038216321480159061457d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561455057600080fd5b505afa158015614564573d6000803e3d6000fd5b505050506040513d602081101561457a57600080fd5b50515b1561458b5791506116349050565b50905090565b806145db576040805162461bcd60e51b8152602060048201526015602482015274496e76656e746f72793a207a65726f2076616c756560581b604482015290519081900360640190fd5b600082815260036020526040902054818101818111614641576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a20737570706c79206f766572666c6f77000000000000604482015290519081900360640190fd5b600093845260036020908152604080862092909255600281528185206001600160a01b039096168552949094525091902080549091019055565b816001146146cd576040805162461bcd60e51b815260206004820152601a602482015279496e76656e746f72793a2077726f6e67204e46542076616c756560301b604482015290519081900360640190fd5b6000838152600460205260409020541561472e576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206578697374696e672f6275726e74204e4654000000604482015290519081900360640190fd5b60008381526004602052604090206001600160a01b038516905580611f0f576000614779847f000000000000000000000000000000000000000000000000000000000000000061384c565b600090815260036020908152604080832080546001908101909155600283528184206001600160a01b038a16855283528184208054820190556008909252909120805490910190555050505050565b3b151590565b63bc197c8160e01b6001600160a01b03851663bc197c816147ed612454565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561486657818101518382015260200161484e565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156148a557818101518382015260200161488d565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156148e15781810151838201526020016148c9565b50505050905090810190601f16801561490e5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561493357600080fd5b505af1158015614947573d6000803e3d6000fd5b505050506040513d602081101561495d57600080fd5b50516001600160e01b031916146119b0576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220726566757365640000000000604482015290519081900360640190fd5b6060816149e057506040805180820190915260018152600360fc1b602082015261159b565b8160005b81156149f857600101600a820491506149e4565b60008167ffffffffffffffff81118015614a1157600080fd5b506040519080825280601f01601f191660200182016040528015614a3c576020820181803683370190505b50859350905060001982015b8315614a8d57600a840660300160f81b82828060019003935081518110614a6b57fe5b60200101906001600160f81b031916908160001a905350600a84049350614a48565b50949350505050565b81614ae0576040805162461bcd60e51b8152602060048201526015602482015274496e76656e746f72793a207a65726f2076616c756560581b604482015290519081900360640190fd5b80614b20576040805162461bcd60e51b815260206004820152601e6024820152600080516020615dd6833981519152604482015290519081900360640190fd5b60008381526002602090815260408083206001600160a01b038816845290915290205482811015614b98576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365000000604482015290519081900360640190fd5b60008481526002602090815260408083206001600160a01b0390981683529681528682209285900390925593845260039052509190208054919091039055565b82600114614c2a576040805162461bcd60e51b815260206004820152601a602482015279496e76656e746f72793a2077726f6e67204e46542076616c756560301b604482015290519081900360640190fd5b6000848152600460205260409020546001600160a01b0386811690821614614c94576040805162461bcd60e51b8152602060048201526018602482015277125b9d995b9d1bdc9e4e881b9bdb8b5bdddb99590813919560421b604482015290519081900360640190fd5b82614d1357600160a01b811615801590614cd457506000858152600960205260409020546001600160a01b0316614cc9612454565b6001600160a01b0316145b614d13576040805162461bcd60e51b815260206004820152601e6024820152600080516020615dd6833981519152604482015290519081900360640190fd5b600085815260046020526040902061dead60f01b90558161314357614d6386614d5c877f000000000000000000000000000000000000000000000000000000000000000061384c565b60016156ee565b6001600160a01b03861660009081526008602052604090208054600019019055505050505050565b6001600160a01b038416614de4576040805162461bcd60e51b815260206004820152601b60248201527a496e76656e746f72793a207472616e7366657220746f207a65726f60281b604482015290519081900360640190fd5b6000614dee612454565b90506000614dfc878361245e565b9050614e0e87878760018560006159ea565b84866001600160a01b0316886001600160a01b0316600080516020615e1683398151915260405160405180910390a4856001600160a01b0316876001600160a01b0316836001600160a01b0316600080516020615db6833981519152886001604051808381526020018281526020019250505060405180910390a4614e9b866001600160a01b03166147c8565b1561195c57614ea986615238565b15614ec157614ebc8787876001886152b9565b61195c565b821561195c5761195c878787876153a2565b6001600160a01b038416614f2c576040805162461bcd60e51b815260206004820152601b60248201527a496e76656e746f72793a207472616e7366657220746f207a65726f60281b604482015290519081900360640190fd5b825182518114614f71576040805162461bcd60e51b815260206004820152601e6024820152600080516020615df6833981519152604482015290519081900360640190fd5b6000614f7b612454565b90506000614f89888361245e565b90506000806000805b8681146150d85760008a8281518110614fa757fe5b60200260200101519050614fba816137f0565b15614fe457614fdf8d8d838d8681518110614fd157fe5b60200260200101518a615891565b6150cf565b61500e817f0000000000000000000000000000000000000000000000000000000000000000612409565b15612738576150358d8d838d868151811061502557fe5b60200260200101518a60016159ea565b808c6001600160a01b03168e6001600160a01b0316600080516020615e1683398151915260405160405180910390a46000615090827f000000000000000000000000000000000000000000000000000000000000000061384c565b9050856150a357809550600194506150cd565b8581146150c6576150b68e8e8888615b82565b94506001939290920191846150cd565b8460010194505b505b50600101614f92565b5082156150f8576150eb8b8b8585615b82565b81016150f88b8b83615bd6565b896001600160a01b03168b6001600160a01b0316615114612454565b6001600160a01b0316600080516020615d968339815191528c8c604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561517257818101518382015260200161515a565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156151b1578181015183820152602001615199565b5050505090500194505050505060405180910390a46151d88a6001600160a01b03166147c8565b15613cdc57613cdc8b8b8b8b8b6147ce565b60005460ff166119cf576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b60408051630271189760e51b6024808301919091528251808303909101815260449091018252602081810180516001600160e01b03166301ffc9a760e01b1781528251935160008082529485948594909392908183858b612710fa955080519450505050609e5a116152a657fe5b8280156152b05750815b95945050505050565b63f23a6e6160e01b6001600160a01b03851663f23a6e616152d8612454565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561535257818101518382015260200161533a565b50505050905090810190601f16801561537f5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561493357600080fd5b630a85bd0160e11b6001600160a01b03841663150b7a026153c1612454565b8786866040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561543457818101518382015260200161541c565b50505050905090810190601f1680156154615780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561548357600080fd5b505af1158015615497573d6000803e3d6000fd5b505050506040513d60208110156154ad57600080fd5b50516001600160e01b03191614611f0f576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220726566757365640000000000604482015290519081900360640190fd5b8161551e6001600160a01b0382166147c8565b61556f576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b602083106155ac5780518252601f19909201916020918201910161558d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461560e576040519150601f19603f3d011682016040523d82523d6000602084013e615613565b606091505b509150915081156156925780511561568d5780806020019051602081101561563a57600080fd5b505161568d576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b6119b0565b80516156e5576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b60008281526002602090815260408083206001600160a01b0390961683529481528482208054849003905592815260039092529190208054919091039055565b366000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681148061579a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b156157b1576157a7615cb1565b925092505061588d565b6001600160a01b038116321480159061587757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d66157fc615ca5565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561584a57600080fd5b505afa15801561585e573d6000803e3d6000fd5b505050506040513d602081101561587457600080fd5b50515b15615884576157a7615cb1565b60003692509250505b9091565b806158d1576040805162461bcd60e51b815260206004820152601e6024820152600080516020615dd6833981519152604482015290519081900360640190fd5b8161591b576040805162461bcd60e51b8152602060048201526015602482015274496e76656e746f72793a207a65726f2076616c756560581b604482015290519081900360640190fd5b60008381526002602090815260408083206001600160a01b038916845290915290205482811015615993576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365000000604482015290519081900360640190fd5b846001600160a01b0316866001600160a01b0316146131435760009384526002602090815260408086206001600160a01b039889168752909152808520918490039091559390941682529190208054909101905550565b82600114615a3c576040805162461bcd60e51b815260206004820152601a602482015279496e76656e746f72793a2077726f6e67204e46542076616c756560301b604482015290519081900360640190fd5b6000848152600460205260409020546001600160a01b0387811690821614615aa6576040805162461bcd60e51b8152602060048201526018602482015277125b9d995b9d1bdc9e4e881b9bdb8b5bdddb99590813919560421b604482015290519081900360640190fd5b82615b2557600160a01b811615801590615ae657506000858152600960205260409020546001600160a01b0316615adb612454565b6001600160a01b0316145b615b25576040805162461bcd60e51b815260206004820152601e6024820152600080516020615dd6833981519152604482015290519081900360640190fd5b60008581526004602052604090206001600160a01b03871690558161195c57615b5087876001615bd6565b61195c8787615b7f887f000000000000000000000000000000000000000000000000000000000000000061384c565b60015b826001600160a01b0316846001600160a01b031614611f0f5760009182526002602090815260408084206001600160a01b039687168552909152808320805483900390559290931681522080549091019055565b816001600160a01b0316836001600160a01b031614611983576001600160a01b0380841660009081526008602052604080822080548590039055918416815220805482019055505050565b60006001600160e01b031982166301ffc9a760e01b1480615c5257506001600160e01b03198216636cdb3d1360e11b145b80615c6d57506001600160e01b031982166303a24d0760e21b145b80615c8857506001600160e01b031982166304e72e2360e11b145b806115985750506001600160e01b03191663bd85b03960e01b1490565b60131936013560601c90565b366000615cc46013198301828481615d6d565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282615d025760008555615d48565b82601f10615d1b5782800160ff19823516178555615d48565b82800160010185558215615d48579182015b82811115615d48578235825591602001919060010190615d2d565b50615d54929150615d58565b5090565b5b80821115615d545760008155600101615d59565b60008085851115615d7c578182fd5b83861115615d88578182fd5b505082019391909203915056fe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fbc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000496e76656e746f72793a20696e636f6e73697374656e74206172726179730000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a516098a60208cb24181b079cc104a08abb49542fff3fd9021d680609a669c3f64736f6c63430007060033",
              "opcodes": "PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x61EC CODESIZE SUB DUP1 PUSH3 0x61EC 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 0xA8 SHL SUB NOT AND CALLER PUSH2 0x100 DUP2 MUL SWAP2 SWAP1 SWAP2 OR DUP3 SSTORE SWAP7 MLOAD SWAP6 SWAP7 SWAP4 SWAP6 SWAP3 SWAP5 DUP8 SWAP5 DUP8 SWAP5 DUP8 SWAP5 SWAP2 SWAP4 SWAP2 SWAP3 SWAP2 DUP6 SWAP2 DUP5 SWAP2 DUP5 SWAP2 DUP5 SWAP2 DUP3 SWAP2 DUP13 SWAP2 DUP13 SWAP2 DUP12 SWAP2 DUP3 SWAP2 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 0x120 JUMPI POP PUSH2 0x100 DUP2 LT JUMPDEST PUSH3 0x172 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 0x18A SWAP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP7 ADD SWAP1 PUSH3 0x211 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0x1A0 SWAP1 PUSH1 0x7 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x211 JUMP JUMPDEST POP POP POP POP POP POP POP PUSH3 0x1B8 DUP2 PUSH3 0x1C5 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP POP POP POP POP POP PUSH3 0x2BD 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 0x249 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x294 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x264 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x294 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x294 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x294 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x277 JUMP JUMPDEST POP PUSH3 0x2A2 SWAP3 SWAP2 POP PUSH3 0x2A6 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x2A2 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x2A7 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH2 0x5E6B PUSH3 0x381 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x14EA MSTORE DUP1 PUSH2 0x2045 MSTORE DUP1 PUSH2 0x2213 MSTORE DUP1 PUSH2 0x2286 MSTORE DUP1 PUSH2 0x2613 MSTORE DUP1 PUSH2 0x2677 MSTORE DUP1 PUSH2 0x2A2C MSTORE DUP1 PUSH2 0x2C7E MSTORE DUP1 PUSH2 0x2E9A MSTORE DUP1 PUSH2 0x2F66 MSTORE DUP1 PUSH2 0x3153 MSTORE DUP1 PUSH2 0x326A MSTORE DUP1 PUSH2 0x349E MSTORE DUP1 PUSH2 0x3516 MSTORE DUP1 PUSH2 0x3868 MSTORE DUP1 PUSH2 0x3B85 MSTORE DUP1 PUSH2 0x3DB0 MSTORE DUP1 PUSH2 0x3F78 MSTORE DUP1 PUSH2 0x4224 MSTORE DUP1 PUSH2 0x4755 MSTORE DUP1 PUSH2 0x4D38 MSTORE DUP1 PUSH2 0x4FEA MSTORE DUP1 PUSH2 0x506C MSTORE DUP1 PUSH2 0x5B5B MSTORE POP DUP1 PUSH2 0x1B5A MSTORE DUP1 PUSH2 0x447C MSTORE DUP1 PUSH2 0x5766 MSTORE POP DUP1 PUSH2 0x1B95 MSTORE DUP1 PUSH2 0x4441 MSTORE DUP1 PUSH2 0x44D4 MSTORE DUP1 PUSH2 0x573C MSTORE DUP1 PUSH2 0x57C7 MSTORE POP PUSH2 0x5E6B 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 0x294 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7E518EC8 GT PUSH2 0x167 JUMPI DUP1 PUSH4 0xBD85B039 GT PUSH2 0xCE JUMPI DUP1 PUSH4 0xE8AB9CCC GT PUSH2 0x87 JUMPI DUP1 PUSH4 0xE8AB9CCC EQ PUSH2 0x10A7 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x1205 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x1233 JUMPI DUP1 PUSH4 0xF2472965 EQ PUSH2 0x12FC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x13AD JUMPI DUP1 PUSH4 0xF3993D11 EQ PUSH2 0x13D3 JUMPI PUSH2 0x294 JUMP JUMPDEST DUP1 PUSH4 0xBD85B039 EQ PUSH2 0xF1D JUMPI DUP1 PUSH4 0xC3666C36 EQ PUSH2 0xF3A JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0x1048 JUMPI DUP1 PUSH4 0xC7778BAA EQ PUSH2 0x1050 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x106D JUMPI DUP1 PUSH4 0xD0011D9D EQ PUSH2 0x108A JUMPI PUSH2 0x294 JUMP JUMPDEST DUP1 PUSH4 0x983B2D56 GT PUSH2 0x120 JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0xDBA JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0xDE0 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0xDE8 JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0xE16 JUMPI DUP1 PUSH4 0xADEBF6F2 EQ PUSH2 0xE3C JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0xE59 JUMPI PUSH2 0x294 JUMP JUMPDEST DUP1 PUSH4 0x7E518EC8 EQ PUSH2 0xB7E JUMPI DUP1 PUSH4 0x80534934 EQ PUSH2 0xBEC JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0xD1F JUMPI DUP1 PUSH4 0x8832E6E3 EQ PUSH2 0xD27 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xDAA JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xDB2 JUMPI PUSH2 0x294 JUMP JUMPDEST DUP1 PUSH4 0x40C10F19 GT PUSH2 0x20B JUMPI DUP1 PUSH4 0x5B2BD79E GT PUSH2 0x1C4 JUMPI DUP1 PUSH4 0x5B2BD79E EQ PUSH2 0x993 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x99B JUMPI DUP1 PUSH4 0x5CFA9297 EQ PUSH2 0x9A3 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0xA2D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xA4A JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0xA70 JUMPI PUSH2 0x294 JUMP JUMPDEST DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x762 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x78E JUMPI DUP1 PUSH4 0x4684D7E9 EQ PUSH2 0x7C4 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x842 JUMPI DUP1 PUSH4 0x510B5158 EQ PUSH2 0x950 JUMPI DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x96D JUMPI PUSH2 0x294 JUMP JUMPDEST DUP1 PUSH4 0xD6A5BBB GT PUSH2 0x25D JUMPI DUP1 PUSH4 0xD6A5BBB EQ PUSH2 0x3F6 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x514 JUMPI DUP1 PUSH4 0x124D91E5 EQ PUSH2 0x531 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x563 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x599 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x75A JUMPI PUSH2 0x294 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x299 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x312 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x38F JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x3C8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x148D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x1573 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x31A PUSH2 0x15A0 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 0x354 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x33C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x381 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 0x3AC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1637 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 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x16D4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x40C 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 0x436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x448 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 0x469 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 0x486 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x498 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 0x4B9 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 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4E8 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 0x509 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x18AA JUMP JUMPDEST PUSH2 0x31A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x52A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1965 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x547 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 0x1970 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x579 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 0x1988 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x5AF 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 0x5E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5F4 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 0x615 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 0x664 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x676 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 0x697 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 0x6E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6F8 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 0x719 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 0x199B SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3F4 PUSH2 0x19B7 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x778 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x19D1 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x7A4 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 0x19FC JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x7DA 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 0x804 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x816 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 0x837 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1A0F JUMP JUMPDEST PUSH2 0x900 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x858 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x872 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x884 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 0x8A5 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 0x8C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8D4 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 0x8F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1A57 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 0x93C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x924 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3AC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x966 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1B4B JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x983 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B56 JUMP JUMPDEST PUSH2 0x31A PUSH2 0x1BCF JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x1C5D JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x9B9 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 0x9EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA01 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 0xA22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1C66 JUMP JUMPDEST PUSH2 0x3AC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1CB3 JUMP JUMPDEST PUSH2 0x2C5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1CBE JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xA86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xAA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xAB2 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 0xAD3 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 0xAF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB02 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 0xB23 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 0xB40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB52 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 0xB73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1D31 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xBAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xBC0 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 0xBE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1E1E JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC02 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 0xC2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC3E 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 0xC5F 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 0xCAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCC0 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 0xCE1 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 0x1E9A SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3F4 PUSH2 0x1EAD JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xD3D 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 0xD6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD7E 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 0xD9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1EC0 JUMP JUMPDEST PUSH2 0x3AC PUSH2 0x1F15 JUMP JUMPDEST PUSH2 0x31A PUSH2 0x1F29 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1F8A JUMP JUMPDEST PUSH2 0x3F4 PUSH2 0x1FA1 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xDFE 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 0x1FFF JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2009 JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x201E JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xE6F 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 0xEA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xEBB 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 0xEDC 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 0x2029 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2C5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x203D JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xF50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xF6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xF7C 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 0xF9D 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 0xFBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xFCC 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 0xFED 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 0x100A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x101C 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 0x103D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x20B4 JUMP JUMPDEST PUSH2 0x31A PUSH2 0x21FC JUMP JUMPDEST PUSH2 0x2C5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1066 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x220B JUMP JUMPDEST PUSH2 0x31A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1083 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x22AA JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x231D JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x10BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x10D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x10E9 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 0x110A 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 0x1127 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1139 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 0x115A 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 0x1177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1189 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 0x11AA 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 0x11C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x11D9 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 0x11FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2331 JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x121B 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 0x234C JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x1249 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 0x1288 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x129A 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 0x12BB 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 0x235F SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1312 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 0x133C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x134E 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 0x136F 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 0x2374 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2386 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x13E9 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 0x141C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x142E 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 0x144F 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 0x23F6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x14E4 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 0x496E76656E746F72793A207A65726F2061646472657373 PUSH1 0x48 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x150E DUP3 PUSH32 0x0 PUSH2 0x2409 JUMP JUMPDEST ISZERO PUSH2 0x1548 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 0x153B JUMPI PUSH1 0x0 PUSH2 0x153E JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x156D 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 0x1598 JUMPI POP PUSH2 0x1598 DUP3 PUSH2 0x242F 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 0x162C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1601 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x162C 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 0x160F 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 0x169F 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 PUSH27 0x125B9D995B9D1BDC9E4E881B9BDB8B595E1A5CDD1A5B99C8139195 PUSH1 0x2A SHL 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 0x16CA 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 0x159B JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x159B JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x1733 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 PUSH27 0x125B9D995B9D1BDC9E4E881B9BDB8B595E1A5CDD1A5B99C8139195 PUSH1 0x2A SHL 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 0x1790 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 PUSH24 0x125B9D995B9D1BDC9E4E881CD95B198B585C1C1C9BDD985B PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x17A1 DUP2 PUSH2 0x179C PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x245E JUMP JUMPDEST PUSH2 0x17E0 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DD6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x181A JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP3 AND ISZERO PUSH2 0x1815 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 0x1863 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP3 OR DUP1 DUP4 EQ PUSH2 0x183A 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x18BA PUSH2 0x18B5 PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x24AA JUMP JUMPDEST PUSH2 0x195C 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 0x2517 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1598 DUP3 PUSH2 0x28CF JUMP JUMPDEST PUSH2 0x1978 PUSH2 0x29A2 JUMP JUMPDEST PUSH2 0x1983 DUP4 DUP4 DUP4 PUSH2 0x29ED JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1990 PUSH2 0x29A2 JUMP JUMPDEST PUSH2 0x1983 DUP4 DUP4 DUP4 PUSH2 0x2ADD JUMP JUMPDEST PUSH2 0x19A3 PUSH2 0x29A2 JUMP JUMPDEST PUSH2 0x19B0 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x2AFA JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x19C7 PUSH2 0x19C2 PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x2B07 JUMP JUMPDEST PUSH2 0x19CF PUSH2 0x2BCB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x19DC PUSH2 0x18B5 PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x19F8 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x2C23 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x1A04 PUSH2 0x29A2 JUMP JUMPDEST PUSH2 0x1983 DUP4 DUP4 DUP4 PUSH2 0x2DB6 JUMP JUMPDEST PUSH2 0x1A1A PUSH2 0x18B5 PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x1983 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 0x2DD3 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 DUP3 EQ PUSH2 0x1A9B 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DF6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x1AB4 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 0x1ADE 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 0x1B41 JUMPI PUSH2 0x1B22 DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x1AFA 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 0x1B16 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x148D JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1B2E JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1AE4 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1598 DUP3 PUSH2 0x314B 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 0x1598 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 0x1C55 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1C2A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1C55 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 0x1C38 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x1C71 PUSH2 0x18B5 PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x19B0 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 0x31E5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1598 DUP3 PUSH2 0x3327 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1D15 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 0x496E76656E746F72793A207A65726F2061646472657373 PUSH1 0x48 SHL 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 0x1D3C PUSH2 0x19C2 PUSH2 0x2454 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1D4B JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1D9C 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 0x1E14 JUMPI PUSH2 0x1E0C DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x1DB5 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 0x1DD1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x1DE4 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 0x338F SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1D9F JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1E29 PUSH2 0x19C2 PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x1E35 PUSH1 0xA DUP4 DUP4 PUSH2 0x5CCC 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 PUSH2 0x1EA2 PUSH2 0x29A2 JUMP JUMPDEST PUSH2 0x1983 DUP4 DUP4 DUP4 PUSH2 0x33E1 JUMP JUMPDEST PUSH2 0x1EB8 PUSH2 0x19C2 PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x19CF PUSH2 0x368A JUMP JUMPDEST PUSH2 0x1ECB PUSH2 0x18B5 PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x1F0F 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 0x2C23 SWAP2 POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV 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 0x162C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1601 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x162C JUMP JUMPDEST PUSH2 0x1F95 PUSH2 0x19C2 PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x1F9E DUP2 PUSH2 0x36C8 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FAB PUSH2 0x2454 JUMP JUMPDEST SWAP1 POP PUSH2 0x1FB6 DUP2 PUSH2 0x24AA 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 0x19F8 DUP3 DUP3 PUSH2 0x3714 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 0x1598 DUP3 PUSH2 0x37F0 JUMP JUMPDEST PUSH2 0x2031 PUSH2 0x29A2 JUMP JUMPDEST PUSH2 0x1F0F DUP5 DUP5 DUP5 DUP5 PUSH2 0x37FA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2069 DUP3 PUSH32 0x0 PUSH2 0x2409 JUMP JUMPDEST ISZERO PUSH2 0x209F 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 0x2092 JUMPI PUSH1 0x1 PUSH2 0x2095 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x159B JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x159B JUMP JUMPDEST PUSH2 0x20BF PUSH2 0x19C2 PUSH2 0x2454 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x20CE JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x211F 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 0x1E14 JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x2135 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 0x2160 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 0x217C 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 0x21D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x21ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x2122 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2206 PUSH2 0x3808 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2237 DUP3 PUSH32 0x0 PUSH2 0x2409 JUMP JUMPDEST PUSH2 0x2280 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 0x1598 DUP3 PUSH32 0x0 PUSH2 0x384C 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 0x2314 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 PUSH27 0x125B9D995B9D1BDC9E4E881B9BDB8B595E1A5CDD1A5B99C8139195 PUSH1 0x2A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1598 DUP3 PUSH2 0x1965 JUMP JUMPDEST PUSH2 0x2328 PUSH2 0x19C2 PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x1F9E DUP2 PUSH2 0x3862 JUMP JUMPDEST PUSH2 0x233C PUSH2 0x18B5 PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x1E14 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x39B7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2358 DUP4 DUP4 PUSH2 0x3CE9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2367 PUSH2 0x29A2 JUMP JUMPDEST PUSH2 0x19B0 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x3D17 JUMP JUMPDEST PUSH2 0x237C PUSH2 0x29A2 JUMP JUMPDEST PUSH2 0x19F8 DUP3 DUP3 PUSH2 0x3E87 JUMP JUMPDEST PUSH2 0x2391 PUSH2 0x19C2 PUSH2 0x2454 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH21 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 NOT AND PUSH2 0x100 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND DUP3 DUP2 MUL SWAP4 SWAP1 SWAP4 OR DUP1 DUP6 SSTORE PUSH1 0x40 MLOAD SWAP4 SWAP5 SWAP3 SWAP1 DIV AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH2 0x23FE PUSH2 0x29A2 JUMP JUMPDEST PUSH2 0x1983 DUP4 DUP4 DUP4 PUSH2 0x40E2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF SHL DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2358 JUMPI POP PUSH2 0x2424 DUP3 PUSH2 0x43C5 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 0x1598 JUMPI POP PUSH2 0x1598 DUP3 PUSH2 0x43D6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2206 PUSH2 0x4431 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 0x2358 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 0x1F9E 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 0x256C 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 0x25B1 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DF6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x278F JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x25CD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x25E5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x25F8 DUP3 PUSH2 0x37F0 JUMP JUMPDEST ISZERO PUSH2 0x260D JUMPI PUSH2 0x2608 DUP12 DUP4 DUP4 PUSH2 0x4591 JUMP JUMPDEST PUSH2 0x2785 JUMP JUMPDEST PUSH2 0x2637 DUP3 PUSH32 0x0 PUSH2 0x2409 JUMP JUMPDEST ISZERO PUSH2 0x2738 JUMPI PUSH2 0x2649 DUP12 DUP4 DUP4 PUSH1 0x1 PUSH2 0x467B 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 0x5E16 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x269B DUP4 PUSH32 0x0 PUSH2 0x384C JUMP JUMPDEST SWAP1 POP DUP7 PUSH2 0x26AE JUMPI DUP1 SWAP7 POP PUSH1 0x1 SWAP6 POP PUSH2 0x2732 JUMP JUMPDEST DUP7 DUP2 EQ PUSH2 0x272B 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 0x2732 JUMP JUMPDEST DUP6 PUSH1 0x1 ADD SWAP6 POP JUMPDEST POP PUSH2 0x2785 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 POP POP PUSH1 0x1 ADD PUSH2 0x25B8 JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x27E4 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 0x27F8 PUSH2 0x2454 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x2856 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x283E 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 0x2895 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x287D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x28BC DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x47C8 JUMP JUMPDEST ISZERO PUSH2 0x1E14 JUMPI PUSH2 0x1E14 PUSH1 0x0 DUP10 DUP10 DUP10 DUP10 PUSH2 0x47CE JUMP JUMPDEST PUSH1 0x60 PUSH1 0xA PUSH2 0x28DC DUP4 PUSH2 0x49BB 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 0x293A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2918 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x293A 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 0x2926 JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2966 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2947 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 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x19CF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x14185D5CD8589B194E881C185D5CD959 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x29F7 PUSH2 0x2454 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2A05 DUP6 DUP4 PUSH2 0x245E JUMP JUMPDEST SWAP1 POP PUSH2 0x2A10 DUP5 PUSH2 0x37F0 JUMP JUMPDEST ISZERO PUSH2 0x2A26 JUMPI PUSH2 0x2A21 DUP6 DUP6 DUP6 DUP5 PUSH2 0x4A96 JUMP JUMPDEST PUSH2 0x2A8A JUMP JUMPDEST PUSH2 0x2A50 DUP5 PUSH32 0x0 PUSH2 0x2409 JUMP JUMPDEST ISZERO PUSH2 0x2738 JUMPI PUSH2 0x2A63 DUP6 DUP6 DUP6 DUP5 PUSH1 0x0 PUSH2 0x4BD8 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 0x5E16 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP4 SWAP1 LOG4 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DB6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x1983 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x4D8B JUMP JUMPDEST PUSH2 0x19B0 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x4ED3 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 0x2B40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B54 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 0x2B6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x1F9E 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 PUSH2 0x2BD3 PUSH2 0x51EA JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA PUSH2 0x2C06 PUSH2 0x2454 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 LOG1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2C78 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 0x2CA2 DUP4 PUSH32 0x0 PUSH2 0x2409 JUMP JUMPDEST PUSH2 0x2CEB 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 0x2CF9 DUP5 DUP5 PUSH1 0x1 PUSH1 0x0 PUSH2 0x467B 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 0x5E16 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 PUSH2 0x2D33 PUSH2 0x2454 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DB6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x2D7C DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x47C8 JUMP JUMPDEST ISZERO PUSH2 0x1F0F JUMPI PUSH2 0x2D8A DUP5 PUSH2 0x5238 JUMP JUMPDEST ISZERO PUSH2 0x2DA3 JUMPI PUSH2 0x2D9E PUSH1 0x0 DUP6 DUP6 PUSH1 0x1 DUP7 PUSH2 0x52B9 JUMP JUMPDEST PUSH2 0x1F0F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1F0F JUMPI PUSH2 0x1F0F PUSH1 0x0 DUP6 DUP6 DUP6 PUSH2 0x53A2 JUMP JUMPDEST PUSH2 0x1983 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x1 PUSH2 0x4D8B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2E28 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 0x2E43 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 0x2E6D 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 0x2FF9 JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2E8B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x2EC8 PUSH32 0x0 DUP3 PUSH2 0x2409 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x2F11 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 0x2F1F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x2F38 DUP9 DUP3 PUSH1 0x1 DUP1 PUSH2 0x467B 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 0x5E16 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x2F8A DUP3 PUSH32 0x0 PUSH2 0x384C JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x2F9D JUMPI DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x2FEF JUMP JUMPDEST DUP5 DUP2 EQ PUSH2 0x2FE8 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 0x2FEF JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x2E76 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 0x304D PUSH2 0x2454 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x30AB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3093 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 0x30EA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x30D2 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x3111 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x47C8 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3121 JUMPI POP PUSH2 0x3121 DUP7 PUSH2 0x5238 JUMP JUMPDEST ISZERO PUSH2 0x3143 JUMPI PUSH2 0x3143 PUSH1 0x0 DUP8 DUP8 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x47CE JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3177 DUP3 PUSH32 0x0 PUSH2 0x2409 JUMP JUMPDEST ISZERO PUSH2 0x31C9 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 0x323A 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 0x3244 PUSH2 0x2454 JUMP JUMPDEST SWAP1 POP PUSH2 0x324F DUP5 PUSH2 0x37F0 JUMP JUMPDEST ISZERO PUSH2 0x3264 JUMPI PUSH2 0x325F DUP6 DUP6 DUP6 PUSH2 0x4591 JUMP JUMPDEST PUSH2 0x32C7 JUMP JUMPDEST PUSH2 0x328E DUP5 PUSH32 0x0 PUSH2 0x2409 JUMP JUMPDEST ISZERO PUSH2 0x2738 JUMPI PUSH2 0x32A0 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x467B 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 0x5E16 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DB6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x3314 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x47C8 JUMP JUMPDEST ISZERO PUSH2 0x19B0 JUMPI PUSH2 0x19B0 PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 PUSH2 0x52B9 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 0x1598 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 PUSH27 0x125B9D995B9D1BDC9E4E881B9BDB8B595E1A5CDD1A5B99C8139195 PUSH1 0x2A SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x1983 SWAP1 DUP5 SWAP1 PUSH2 0x550B JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x3426 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DF6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3430 PUSH2 0x2454 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x343E DUP7 DUP4 PUSH2 0x245E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP7 DUP2 EQ PUSH2 0x3581 JUMPI PUSH1 0x0 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x345C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x346F DUP2 PUSH2 0x37F0 JUMP JUMPDEST ISZERO PUSH2 0x3498 JUMPI PUSH2 0x3493 DUP12 DUP3 DUP12 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x3485 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 PUSH2 0x4A96 JUMP JUMPDEST PUSH2 0x3578 JUMP JUMPDEST PUSH2 0x34C2 DUP2 PUSH32 0x0 PUSH2 0x2409 JUMP JUMPDEST ISZERO PUSH2 0x2738 JUMPI PUSH2 0x34E8 DUP12 DUP3 DUP12 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x34D8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 PUSH1 0x1 PUSH2 0x4BD8 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 0x5E16 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP4 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x353A DUP3 PUSH32 0x0 PUSH2 0x384C JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x354D JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x3576 JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x356F JUMPI PUSH2 0x355F DUP13 DUP8 DUP8 PUSH2 0x56EE JUMP JUMPDEST SWAP5 POP PUSH1 0x1 SWAP4 SWAP3 SWAP1 SWAP3 ADD SWAP2 DUP5 PUSH2 0x3576 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x3447 JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x35B7 JUMPI PUSH2 0x3593 DUP10 DUP5 DUP5 PUSH2 0x56EE 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x362B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3613 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 0x366A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3652 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 0x3692 PUSH2 0x29A2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x2C06 PUSH2 0x2454 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 0x371E PUSH2 0x2454 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 0x3782 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 PUSH24 0x125B9D995B9D1BDC9E4E881CD95B198B585C1C1C9BDD985B PUSH1 0x42 SHL 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 0x1 PUSH1 0xFF SHL AND ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x1F0F DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x4D8B JUMP JUMPDEST PUSH1 0x60 PUSH2 0x3812 PUSH2 0x572E 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 PUSH1 0x0 PUSH2 0x3857 DUP3 PUSH2 0x43C5 JUMP JUMPDEST NOT DUP4 AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x388C DUP2 PUSH32 0x0 PUSH2 0x2409 JUMP JUMPDEST ISZERO PUSH2 0x38DE 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 0x3948 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 0x3950 PUSH2 0x2454 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x3985 DUP2 PUSH2 0x37F0 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 0x39C6 JUMPI POP DUP1 DUP5 EQ JUMPDEST PUSH2 0x3A05 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DF6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3A0F PUSH2 0x2454 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 EQ PUSH2 0x3CDC JUMPI PUSH1 0x0 DUP12 DUP12 DUP4 DUP2 DUP2 LT PUSH2 0x3A29 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 0x3A9D 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 0x3AAB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP PUSH1 0x0 DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x3AC2 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP PUSH2 0x3AD4 DUP3 PUSH2 0x37F0 JUMP JUMPDEST ISZERO PUSH2 0x3B7F JUMPI PUSH2 0x3AE4 DUP4 DUP4 DUP4 PUSH2 0x4591 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DB6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x3B31 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x47C8 JUMP JUMPDEST ISZERO PUSH2 0x3B7A JUMPI PUSH2 0x3B7A 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 0x52B9 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x3CCE JUMP JUMPDEST PUSH2 0x3BA9 DUP3 PUSH32 0x0 PUSH2 0x2409 JUMP JUMPDEST ISZERO PUSH2 0x2738 JUMPI PUSH2 0x3BBB DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x467B 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 0x5E16 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DB6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x3C2E DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x47C8 JUMP JUMPDEST ISZERO PUSH2 0x3B7A JUMPI PUSH2 0x3C3C DUP4 PUSH2 0x5238 JUMP JUMPDEST ISZERO PUSH2 0x3C8B JUMPI PUSH2 0x3C86 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 0x52B9 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x3B7A JUMP JUMPDEST PUSH2 0x3B7A 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 0x53A2 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x3A14 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP 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 PUSH1 0x0 PUSH2 0x3D21 PUSH2 0x2454 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x3D7C 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 PUSH27 0x496E76656E746F72793A207472616E7366657220746F207A65726F PUSH1 0x28 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3D88 DUP8 DUP4 PUSH2 0x245E JUMP JUMPDEST SWAP1 POP PUSH2 0x3D93 DUP6 PUSH2 0x37F0 JUMP JUMPDEST ISZERO PUSH2 0x3DAA JUMPI PUSH2 0x3DA5 DUP8 DUP8 DUP8 DUP8 DUP6 PUSH2 0x5891 JUMP JUMPDEST PUSH2 0x3E18 JUMP JUMPDEST PUSH2 0x3DD4 DUP6 PUSH32 0x0 PUSH2 0x2409 JUMP JUMPDEST ISZERO PUSH2 0x2738 JUMPI PUSH2 0x3DE8 DUP8 DUP8 DUP8 DUP8 DUP6 PUSH1 0x0 PUSH2 0x59EA 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 0x5E16 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DB6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x3E75 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x47C8 JUMP JUMPDEST ISZERO PUSH2 0x195C JUMPI PUSH2 0x195C DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x52B9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E91 PUSH2 0x2454 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3E9F DUP5 DUP4 PUSH2 0x245E JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3EBD 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 0x3EE7 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 0x3FDE JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3F05 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x1 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3F1D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x3F4A DUP11 DUP3 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x3F3A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP11 PUSH1 0x1 PUSH2 0x4BD8 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 0x5E16 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP4 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x3F9C DUP3 PUSH32 0x0 PUSH2 0x384C JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x3FAF JUMPI DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x3FD4 JUMP JUMPDEST DUP5 DUP2 EQ PUSH2 0x3FCD JUMPI PUSH2 0x3FC1 DUP12 DUP7 DUP7 PUSH2 0x56EE JUMP JUMPDEST DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x3FD4 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x3EF0 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x4010 JUMPI PUSH2 0x3FF0 DUP9 DUP4 DUP4 PUSH2 0x56EE 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x4084 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x406C 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 0x40C3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x40AB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x413B 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 PUSH27 0x496E76656E746F72793A207472616E7366657220746F207A65726F PUSH1 0x28 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4145 PUSH2 0x2454 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4153 DUP6 DUP4 PUSH2 0x245E JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x4171 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 0x419B 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 0x428B JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x41B9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x1 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x41D1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x41ED DUP12 DUP12 DUP4 PUSH1 0x1 DUP12 PUSH1 0x1 PUSH2 0x59EA 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 0x5E16 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x0 PUSH2 0x4248 DUP3 PUSH32 0x0 PUSH2 0x384C JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x425B JUMPI DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x4281 JUMP JUMPDEST DUP5 DUP2 EQ PUSH2 0x427A JUMPI PUSH2 0x426E DUP13 DUP13 DUP8 DUP8 PUSH2 0x5B82 JUMP JUMPDEST DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x4281 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x41A4 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x42A9 JUMPI PUSH2 0x429E DUP10 DUP10 DUP5 DUP5 PUSH2 0x5B82 JUMP JUMPDEST PUSH2 0x42A9 DUP10 DUP10 DUP7 PUSH2 0x5BD6 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x42C5 PUSH2 0x2454 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x4323 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x430B 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 0x4362 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x434A JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x4389 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x47C8 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x4399 JUMPI POP PUSH2 0x4399 DUP9 PUSH2 0x5238 JUMP JUMPDEST ISZERO PUSH2 0x43BA JUMPI PUSH2 0x43BA DUP10 DUP10 DUP10 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x47CE JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP 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 0x4407 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x4422 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0xF3993D11 PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x1598 JUMPI POP PUSH2 0x1598 DUP3 PUSH2 0x5C21 JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x443D PUSH2 0x5CA5 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 0x44B0 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 0x44BE JUMPI SWAP2 POP PUSH2 0x1634 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x457D 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 0x4550 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4564 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 0x457A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x458B JUMPI SWAP2 POP PUSH2 0x1634 SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x45DB 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 0x4641 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 0x46CD 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 PUSH26 0x496E76656E746F72793A2077726F6E67204E46542076616C7565 PUSH1 0x30 SHL 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 0x472E 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 0x1F0F JUMPI PUSH1 0x0 PUSH2 0x4779 DUP5 PUSH32 0x0 PUSH2 0x384C 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 EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH4 0xBC197C81 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0xBC197C81 PUSH2 0x47ED PUSH2 0x2454 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 0x4866 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x484E 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 0x48A5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x488D 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 0x48E1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x48C9 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x490E 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 0x4933 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4947 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 0x495D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x19B0 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 PUSH1 0x60 DUP2 PUSH2 0x49E0 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 0x159B JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x49F8 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0x49E4 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x4A11 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 0x4A3C 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 0x4A8D 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 0x4A6B JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x4A48 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x4AE0 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 0x4B20 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DD6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x4B98 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 0x4C2A 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 PUSH26 0x496E76656E746F72793A2077726F6E67204E46542076616C7565 PUSH1 0x30 SHL 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 0x4C94 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 PUSH24 0x125B9D995B9D1BDC9E4E881B9BDB8B5BDDDB995908139195 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x4D13 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x4CD4 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 0x4CC9 PUSH2 0x2454 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x4D13 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DD6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x3143 JUMPI PUSH2 0x4D63 DUP7 PUSH2 0x4D5C DUP8 PUSH32 0x0 PUSH2 0x384C JUMP JUMPDEST PUSH1 0x1 PUSH2 0x56EE 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 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x4DE4 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 PUSH27 0x496E76656E746F72793A207472616E7366657220746F207A65726F PUSH1 0x28 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4DEE PUSH2 0x2454 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4DFC DUP8 DUP4 PUSH2 0x245E JUMP JUMPDEST SWAP1 POP PUSH2 0x4E0E DUP8 DUP8 DUP8 PUSH1 0x1 DUP6 PUSH1 0x0 PUSH2 0x59EA 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 0x5E16 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DB6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x4E9B DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x47C8 JUMP JUMPDEST ISZERO PUSH2 0x195C JUMPI PUSH2 0x4EA9 DUP7 PUSH2 0x5238 JUMP JUMPDEST ISZERO PUSH2 0x4EC1 JUMPI PUSH2 0x4EBC DUP8 DUP8 DUP8 PUSH1 0x1 DUP9 PUSH2 0x52B9 JUMP JUMPDEST PUSH2 0x195C JUMP JUMPDEST DUP3 ISZERO PUSH2 0x195C JUMPI PUSH2 0x195C DUP8 DUP8 DUP8 DUP8 PUSH2 0x53A2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x4F2C 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 PUSH27 0x496E76656E746F72793A207472616E7366657220746F207A65726F PUSH1 0x28 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 0x4F71 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DF6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4F7B PUSH2 0x2454 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4F89 DUP9 DUP4 PUSH2 0x245E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP7 DUP2 EQ PUSH2 0x50D8 JUMPI PUSH1 0x0 DUP11 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4FA7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x4FBA DUP2 PUSH2 0x37F0 JUMP JUMPDEST ISZERO PUSH2 0x4FE4 JUMPI PUSH2 0x4FDF DUP14 DUP14 DUP4 DUP14 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x4FD1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP11 PUSH2 0x5891 JUMP JUMPDEST PUSH2 0x50CF JUMP JUMPDEST PUSH2 0x500E DUP2 PUSH32 0x0 PUSH2 0x2409 JUMP JUMPDEST ISZERO PUSH2 0x2738 JUMPI PUSH2 0x5035 DUP14 DUP14 DUP4 DUP14 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x5025 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP11 PUSH1 0x1 PUSH2 0x59EA 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 0x5E16 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x0 PUSH2 0x5090 DUP3 PUSH32 0x0 PUSH2 0x384C JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x50A3 JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x50CD JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x50C6 JUMPI PUSH2 0x50B6 DUP15 DUP15 DUP9 DUP9 PUSH2 0x5B82 JUMP JUMPDEST SWAP5 POP PUSH1 0x1 SWAP4 SWAP3 SWAP1 SWAP3 ADD SWAP2 DUP5 PUSH2 0x50CD JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x4F92 JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x50F8 JUMPI PUSH2 0x50EB DUP12 DUP12 DUP6 DUP6 PUSH2 0x5B82 JUMP JUMPDEST DUP2 ADD PUSH2 0x50F8 DUP12 DUP12 DUP4 PUSH2 0x5BD6 JUMP JUMPDEST DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5114 PUSH2 0x2454 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x5172 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x515A 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 0x51B1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5199 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x51D8 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x47C8 JUMP JUMPDEST ISZERO PUSH2 0x3CDC JUMPI PUSH2 0x3CDC DUP12 DUP12 DUP12 DUP12 DUP12 PUSH2 0x47CE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH2 0x19CF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x14185D5CD8589B194E881B9BDD081C185D5CD959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB 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 0x52A6 JUMPI INVALID JUMPDEST DUP3 DUP1 ISZERO PUSH2 0x52B0 JUMPI POP DUP2 JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0xF23A6E61 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0xF23A6E61 PUSH2 0x52D8 PUSH2 0x2454 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 0x5352 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x533A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x537F 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 0x4933 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0xA85BD01 PUSH1 0xE1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH4 0x150B7A02 PUSH2 0x53C1 PUSH2 0x2454 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 0x5434 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x541C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x5461 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 0x5483 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5497 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 0x54AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1F0F 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 0x551E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x47C8 JUMP JUMPDEST PUSH2 0x556F 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 0x55AC JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x558D 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 0x560E 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 0x5613 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x5692 JUMPI DUP1 MLOAD ISZERO PUSH2 0x568D JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x563A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x568D 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 0x19B0 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x56E5 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 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 CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x579A 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 0x57B1 JUMPI PUSH2 0x57A7 PUSH2 0x5CB1 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x588D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x5877 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x57FC PUSH2 0x5CA5 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 0x584A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x585E 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 0x5874 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x5884 JUMPI PUSH2 0x57A7 PUSH2 0x5CB1 JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST DUP1 PUSH2 0x58D1 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DD6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x591B 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 0x5993 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 0x3143 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 0x5A3C 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 PUSH26 0x496E76656E746F72793A2077726F6E67204E46542076616C7565 PUSH1 0x30 SHL 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 0x5AA6 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 PUSH24 0x125B9D995B9D1BDC9E4E881B9BDB8B5BDDDB995908139195 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x5B25 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x5AE6 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 0x5ADB PUSH2 0x2454 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x5B25 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DD6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x195C JUMPI PUSH2 0x5B50 DUP8 DUP8 PUSH1 0x1 PUSH2 0x5BD6 JUMP JUMPDEST PUSH2 0x195C DUP8 DUP8 PUSH2 0x5B7F DUP9 PUSH32 0x0 PUSH2 0x384C JUMP JUMPDEST PUSH1 0x1 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1F0F 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 0x1983 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 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x5C52 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x6CDB3D13 PUSH1 0xE1 SHL EQ JUMPDEST DUP1 PUSH2 0x5C6D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x3A24D07 PUSH1 0xE2 SHL EQ JUMPDEST DUP1 PUSH2 0x5C88 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x4E72E23 PUSH1 0xE1 SHL EQ JUMPDEST DUP1 PUSH2 0x1598 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 0x5CC4 PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x5D6D 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 0x5D02 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x5D48 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x5D1B JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x5D48 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x5D48 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5D48 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5D2D JUMP JUMPDEST POP PUSH2 0x5D54 SWAP3 SWAP2 POP PUSH2 0x5D58 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x5D54 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5D59 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x5D7C JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x5D88 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID 0x4A CODECOPY 0xDC MOD 0xD4 0xC0 0xDB 0xC6 0x4B PUSH17 0xAF90FD698A233A518AA5D07E595D983B8C SDIV 0x26 0xC8 0xF7 0xFB 0xC3 0xD5 DUP2 PUSH9 0xC5AE7397731D063D5B 0xBF RETURNDATASIZE PUSH6 0x7854427343F4 0xC0 DUP4 0x24 0xF PUSH27 0xACAA2D0F62496E76656E746F72793A206E6F6E2D617070726F7665 PUSH5 0x2073656E64 PUSH6 0x720000496E76 PUSH6 0x6E746F72793A KECCAK256 PUSH10 0x6E636F6E73697374656E PUSH21 0x206172726179730000DDF252AD1BE2C89B69C2B068 0xFC CALLDATACOPY DUP14 0xAA SWAP6 0x2B 0xA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA5 AND MULMOD DUP11 PUSH1 0x20 DUP13 0xB2 COINBASE DUP2 0xB0 PUSH26 0xCC104A08ABB49542FFF3FD9021D680609A669C3F64736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "941:4734:27:-:0;;;1033:249;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1033:249:27;;;;;;;;;;;;817:176:21;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;817:176:21;;;;;;;-1:-1:-1;543:16:4;;-1:-1:-1;;;;;;960:15:2;1997:10:26;543:16:4;960:15:2;;;;;;;;990:40;;1033:249:27;;;;;;;;;;;;1997:10:26;;817:176:21;;;1033:249:27;;817:176:21;;;;1033:249:27;;;;;;;;1997:10:26;;;;990:40:2;;-1:-1:-1;;990:40:2;-1:-1:-1;;;;;;;443:40:35;;;;;;;;493:38;;;;;;2448:25:11;;;;;:55;;;2500:3;2477:20;:26;2448:55;2440:96;;;;;-1:-1:-1;;;2440:96:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;2546:44;;1973:13:20;;::::1;::::0;:5:::1;::::0;:13:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;1996:17:20;;::::1;::::0;:7:::1;::::0;:17:::1;::::0;::::1;::::0;::::1;:::i;:::-;;1804:216:::0;;;817:176:21;;;476:18:1::1;487:6;476:10;;;:18;;:::i;:::-;422:79:::0;1667:348:26;;;1033:249:27;;;941:4734;;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;941:4734:27:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;941:4734:27;;;-1:-1:-1;941:4734:27;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:379:36",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:36",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "144:233:36",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "182:32:36",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "191:9:36"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "202:9:36"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "184:6:36"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "184:28:36"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "184:28:36"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "160:10:36"
                                  },
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "172:8:36"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "157:2:36"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "157:24:36"
                              },
                              "nodeType": "YulIf",
                              "src": "154:2:36"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "247:32:36",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "256:9:36"
                                        },
                                        {
                                          "name": "offsetOut",
                                          "nodeType": "YulIdentifier",
                                          "src": "267:9:36"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "249:6:36"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "249:28:36"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "249:28:36"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "229:8:36"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "239:6:36"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "226:2:36"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "226:20:36"
                              },
                              "nodeType": "YulIf",
                              "src": "223:2:36"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "288:36:36",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "305:6:36"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "313:10:36"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "301:3:36"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "301:23:36"
                              },
                              "variableNames": [
                                {
                                  "name": "offsetOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "288:9:36"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "333:38:36",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "endIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "350:8:36"
                                  },
                                  {
                                    "name": "startIndex",
                                    "nodeType": "YulIdentifier",
                                    "src": "360:10:36"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "346:3:36"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "346:25:36"
                              },
                              "variableNames": [
                                {
                                  "name": "lengthOut",
                                  "nodeType": "YulIdentifier",
                                  "src": "333:9:36"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "calldata_array_index_range_access_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "78:6:36",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "86:6:36",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nodeType": "YulTypedName",
                            "src": "94:10:36",
                            "type": ""
                          },
                          {
                            "name": "endIndex",
                            "nodeType": "YulTypedName",
                            "src": "106:8:36",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "offsetOut",
                            "nodeType": "YulTypedName",
                            "src": "119:9:36",
                            "type": ""
                          },
                          {
                            "name": "lengthOut",
                            "nodeType": "YulTypedName",
                            "src": "130:9:36",
                            "type": ""
                          }
                        ],
                        "src": "14:363:36"
                      }
                    ]
                  },
                  "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": 36,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "854": [
                  {
                    "length": 32,
                    "start": 5354
                  },
                  {
                    "length": 32,
                    "start": 8261
                  },
                  {
                    "length": 32,
                    "start": 8723
                  },
                  {
                    "length": 32,
                    "start": 8838
                  },
                  {
                    "length": 32,
                    "start": 9747
                  },
                  {
                    "length": 32,
                    "start": 9847
                  },
                  {
                    "length": 32,
                    "start": 10796
                  },
                  {
                    "length": 32,
                    "start": 11390
                  },
                  {
                    "length": 32,
                    "start": 11930
                  },
                  {
                    "length": 32,
                    "start": 12134
                  },
                  {
                    "length": 32,
                    "start": 12627
                  },
                  {
                    "length": 32,
                    "start": 12906
                  },
                  {
                    "length": 32,
                    "start": 13470
                  },
                  {
                    "length": 32,
                    "start": 13590
                  },
                  {
                    "length": 32,
                    "start": 14440
                  },
                  {
                    "length": 32,
                    "start": 15237
                  },
                  {
                    "length": 32,
                    "start": 15792
                  },
                  {
                    "length": 32,
                    "start": 16248
                  },
                  {
                    "length": 32,
                    "start": 16932
                  },
                  {
                    "length": 32,
                    "start": 18261
                  },
                  {
                    "length": 32,
                    "start": 19768
                  },
                  {
                    "length": 32,
                    "start": 20458
                  },
                  {
                    "length": 32,
                    "start": 20588
                  },
                  {
                    "length": 32,
                    "start": 23387
                  }
                ],
                "5800": [
                  {
                    "length": 32,
                    "start": 7061
                  },
                  {
                    "length": 32,
                    "start": 17473
                  },
                  {
                    "length": 32,
                    "start": 17620
                  },
                  {
                    "length": 32,
                    "start": 22332
                  },
                  {
                    "length": 32,
                    "start": 22471
                  }
                ],
                "5802": [
                  {
                    "length": 32,
                    "start": 7002
                  },
                  {
                    "length": 32,
                    "start": 17532
                  },
                  {
                    "length": 32,
                    "start": 22374
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106102945760003560e01c80637e518ec811610167578063bd85b039116100ce578063e8ab9ccc11610087578063e8ab9ccc146110a7578063e985e9c514611205578063f242432a14611233578063f2472965146112fc578063f2fde38b146113ad578063f3993d11146113d357610294565b8063bd85b03914610f1d578063c3666c3614610f3a578063c4c2bfdc14611048578063c7778baa14611050578063c87b56dd1461106d578063d0011d9d1461108a57610294565b8063983b2d5611610120578063983b2d5614610dba5780639865027514610de0578063a22cb46514610de8578063aa271e1a14610e16578063adebf6f214610e3c578063b88d4fde14610e5957610294565b80637e518ec814610b7e5780638053493414610bec5780638456cb5914610d1f5780638832e6e314610d275780638da5cb5b14610daa57806395d89b4114610db257610294565b806340c10f191161020b5780635b2bd79e116101c45780635b2bd79e146109935780635c975abb1461099b5780635cfa9297146109a35780636352211e14610a2d57806370a0823114610a4a57806373c8a95814610a7057610294565b806340c10f191461076257806342842e0e1461078e5780634684d7e9146107c45780634e1273f414610842578063510b515814610950578063572b6c051461096d57610294565b80630d6a5bbb1161025d5780630d6a5bbb146103f65780630e89341c14610514578063124d91e51461053157806323b872dd146105635780632eb2c2d6146105995780633f4ba83a1461075a57610294565b8062fdd58e1461029957806301ffc9a7146102d757806306fdde0314610312578063081812fc1461038f578063095ea7b3146103c8575b600080fd5b6102c5600480360360408110156102af57600080fd5b506001600160a01b03813516906020013561148d565b60408051918252519081900360200190f35b6102fe600480360360208110156102ed57600080fd5b50356001600160e01b031916611573565b604080519115158252519081900360200190f35b61031a6115a0565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561035457818101518382015260200161033c565b50505050905090810190601f1680156103815780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ac600480360360208110156103a557600080fd5b5035611637565b604080516001600160a01b039092168252519081900360200190f35b6103f4600480360360408110156103de57600080fd5b506001600160a01b0381351690602001356116d4565b005b6103f46004803603608081101561040c57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561043657600080fd5b82018360208201111561044857600080fd5b803590602001918460208302840111600160201b8311171561046957600080fd5b919390929091602081019035600160201b81111561048657600080fd5b82018360208201111561049857600080fd5b803590602001918460208302840111600160201b831117156104b957600080fd5b919390929091602081019035600160201b8111156104d657600080fd5b8201836020820111156104e857600080fd5b803590602001918460018302840111600160201b8311171561050957600080fd5b5090925090506118aa565b61031a6004803603602081101561052a57600080fd5b5035611965565b6103f46004803603606081101561054757600080fd5b506001600160a01b038135169060208101359060400135611970565b6103f46004803603606081101561057957600080fd5b506001600160a01b03813581169160208101359091169060400135611988565b6103f4600480360360a08110156105af57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156105e257600080fd5b8201836020820111156105f457600080fd5b803590602001918460208302840111600160201b8311171561061557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561066457600080fd5b82018360208201111561067657600080fd5b803590602001918460208302840111600160201b8311171561069757600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156106e657600080fd5b8201836020820111156106f857600080fd5b803590602001918460018302840111600160201b8311171561071957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061199b945050505050565b6103f46119b7565b6103f46004803603604081101561077857600080fd5b506001600160a01b0381351690602001356119d1565b6103f4600480360360608110156107a457600080fd5b506001600160a01b038135811691602081013590911690604001356119fc565b6103f4600480360360408110156107da57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561080457600080fd5b82018360208201111561081657600080fd5b803590602001918460208302840111600160201b8311171561083757600080fd5b509092509050611a0f565b6109006004803603604081101561085857600080fd5b810190602081018135600160201b81111561087257600080fd5b82018360208201111561088457600080fd5b803590602001918460208302840111600160201b831117156108a557600080fd5b919390929091602081019035600160201b8111156108c257600080fd5b8201836020820111156108d457600080fd5b803590602001918460208302840111600160201b831117156108f557600080fd5b509092509050611a57565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561093c578181015183820152602001610924565b505050509050019250505060405180910390f35b6103ac6004803603602081101561096657600080fd5b5035611b4b565b6102fe6004803603602081101561098357600080fd5b50356001600160a01b0316611b56565b61031a611bcf565b6102fe611c5d565b6103f4600480360360808110156109b957600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b8111156109ef57600080fd5b820183602082011115610a0157600080fd5b803590602001918460018302840111600160201b83111715610a2257600080fd5b509092509050611c66565b6103ac60048036036020811015610a4357600080fd5b5035611cb3565b6102c560048036036020811015610a6057600080fd5b50356001600160a01b0316611cbe565b6103f460048036036060811015610a8657600080fd5b810190602081018135600160201b811115610aa057600080fd5b820183602082011115610ab257600080fd5b803590602001918460208302840111600160201b83111715610ad357600080fd5b919390929091602081019035600160201b811115610af057600080fd5b820183602082011115610b0257600080fd5b803590602001918460208302840111600160201b83111715610b2357600080fd5b919390929091602081019035600160201b811115610b4057600080fd5b820183602082011115610b5257600080fd5b803590602001918460208302840111600160201b83111715610b7357600080fd5b509092509050611d31565b6103f460048036036020811015610b9457600080fd5b810190602081018135600160201b811115610bae57600080fd5b820183602082011115610bc057600080fd5b803590602001918460018302840111600160201b83111715610be157600080fd5b509092509050611e1e565b6103f460048036036060811015610c0257600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610c2c57600080fd5b820183602082011115610c3e57600080fd5b803590602001918460208302840111600160201b83111715610c5f57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b811115610cae57600080fd5b820183602082011115610cc057600080fd5b803590602001918460208302840111600160201b83111715610ce157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611e9a945050505050565b6103f4611ead565b6103f460048036036060811015610d3d57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b811115610d6c57600080fd5b820183602082011115610d7e57600080fd5b803590602001918460018302840111600160201b83111715610d9f57600080fd5b509092509050611ec0565b6103ac611f15565b61031a611f29565b6103f460048036036020811015610dd057600080fd5b50356001600160a01b0316611f8a565b6103f4611fa1565b6103f460048036036040811015610dfe57600080fd5b506001600160a01b0381351690602001351515611fff565b6102fe60048036036020811015610e2c57600080fd5b50356001600160a01b0316612009565b6102fe60048036036020811015610e5257600080fd5b503561201e565b6103f460048036036080811015610e6f57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b811115610ea957600080fd5b820183602082011115610ebb57600080fd5b803590602001918460018302840111600160201b83111715610edc57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612029945050505050565b6102c560048036036020811015610f3357600080fd5b503561203d565b6103f460048036036060811015610f5057600080fd5b810190602081018135600160201b811115610f6a57600080fd5b820183602082011115610f7c57600080fd5b803590602001918460208302840111600160201b83111715610f9d57600080fd5b919390929091602081019035600160201b811115610fba57600080fd5b820183602082011115610fcc57600080fd5b803590602001918460208302840111600160201b83111715610fed57600080fd5b919390929091602081019035600160201b81111561100a57600080fd5b82018360208201111561101c57600080fd5b803590602001918460208302840111600160201b8311171561103d57600080fd5b5090925090506120b4565b61031a6121fc565b6102c56004803603602081101561106657600080fd5b503561220b565b61031a6004803603602081101561108357600080fd5b50356122aa565b6103f4600480360360208110156110a057600080fd5b503561231d565b6103f4600480360360808110156110bd57600080fd5b810190602081018135600160201b8111156110d757600080fd5b8201836020820111156110e957600080fd5b803590602001918460208302840111600160201b8311171561110a57600080fd5b919390929091602081019035600160201b81111561112757600080fd5b82018360208201111561113957600080fd5b803590602001918460208302840111600160201b8311171561115a57600080fd5b919390929091602081019035600160201b81111561117757600080fd5b82018360208201111561118957600080fd5b803590602001918460208302840111600160201b831117156111aa57600080fd5b919390929091602081019035600160201b8111156111c757600080fd5b8201836020820111156111d957600080fd5b803590602001918460018302840111600160201b831117156111fa57600080fd5b509092509050612331565b6102fe6004803603604081101561121b57600080fd5b506001600160a01b038135811691602001351661234c565b6103f4600480360360a081101561124957600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b81111561128857600080fd5b82018360208201111561129a57600080fd5b803590602001918460018302840111600160201b831117156112bb57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061235f945050505050565b6103f46004803603604081101561131257600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561133c57600080fd5b82018360208201111561134e57600080fd5b803590602001918460208302840111600160201b8311171561136f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612374945050505050565b6103f4600480360360208110156113c357600080fd5b50356001600160a01b0316612386565b6103f4600480360360608110156113e957600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561141c57600080fd5b82018360208201111561142e57600080fd5b803590602001918460208302840111600160201b8311171561144f57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506123f6945050505050565b60006001600160a01b0383166114e4576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a207a65726f206164647265737360481b604482015290519081900360640190fd5b61150e827f0000000000000000000000000000000000000000000000000000000000000000612409565b15611548576000828152600460205260409020546001600160a01b0384811691161461153b57600061153e565b60015b60ff16905061156d565b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216630a216a2b60e31b148061159857506115988261242f565b90505b919050565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561162c5780601f106116015761010080835404028352916020019161162c565b820191906000526020600020905b81548152906001019060200180831161160f57829003601f168201915b505050505090505b90565b6000818152600460205260408120546001600160a01b03811661169f576040805162461bcd60e51b815260206004820152601b60248201527a125b9d995b9d1bdc9e4e881b9bdb8b595e1a5cdd1a5b99c8139195602a1b604482015290519081900360640190fd5b600160a01b8116156116ca5750506000818152600960205260409020546001600160a01b031661159b565b600091505061159b565b60008181526004602052604090205480611733576040805162461bcd60e51b815260206004820152601b60248201527a125b9d995b9d1bdc9e4e881b9bdb8b595e1a5cdd1a5b99c8139195602a1b604482015290519081900360640190fd5b806001600160a01b038481169082161415611790576040805162461bcd60e51b8152602060048201526018602482015277125b9d995b9d1bdc9e4e881cd95b198b585c1c1c9bdd985b60421b604482015290519081900360640190fd5b6117a18161179c612454565b61245e565b6117e0576040805162461bcd60e51b815260206004820152601e6024820152600080516020615dd6833981519152604482015290519081900360640190fd5b6001600160a01b03841661181a57600160a01b8216156118155760008381526004602052604090206001600160a01b03821690555b611863565b600160a01b821780831461183a5760008481526004602052604090208190555b50600083815260096020526040902080546001600160a01b0319166001600160a01b0386161790555b82846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b6118ba6118b5612454565b6124aa565b61195c8787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061251792505050565b50505050505050565b6060611598826128cf565b6119786129a2565b6119838383836129ed565b505050565b6119906129a2565b611983838383612add565b6119a36129a2565b6119b08585858585612afa565b5050505050565b6119c76119c2612454565b612b07565b6119cf612bcb565b565b6119dc6118b5612454565b6119f88282604051806020016040528060008152506000612c23565b5050565b611a046129a2565b611983838383612db6565b611a1a6118b5612454565b61198383838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612dd392505050565b6060838214611a9b576040805162461bcd60e51b815260206004820152601e6024820152600080516020615df6833981519152604482015290519081900360640190fd5b60008467ffffffffffffffff81118015611ab457600080fd5b50604051908082528060200260200182016040528015611ade578160200160208202803683370190505b50905060005b808614611b4157611b22878783818110611afa57fe5b905060200201356001600160a01b0316868684818110611b1657fe5b9050602002013561148d565b828281518110611b2e57fe5b6020908102919091010152600101611ae4565b5095945050505050565b60006115988261314b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148061159857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b600a805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015611c555780601f10611c2a57610100808354040283529160200191611c55565b820191906000526020600020905b815481529060010190602001808311611c3857829003601f168201915b505050505081565b60005460ff1681565b611c716118b5612454565b6119b085858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506131e592505050565b600061159882613327565b60006001600160a01b038216611d15576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a207a65726f206164647265737360481b604482015290519081900360640190fd5b506001600160a01b031660009081526008602052604090205490565b611d3c6119c2612454565b848381148015611d4b57508082145b611d9c576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114611e1457611e0c888883818110611db557fe5b905060200201356001600160a01b0316858584818110611dd157fe5b90506020020135888885818110611de457fe5b905060200201356001600160a01b03166001600160a01b031661338f9092919063ffffffff16565b600101611d9f565b5050505050505050565b611e296119c2612454565b611e35600a8383615ccc565b507f04b1dc5c136a3ce9fded8db0ce3d3366c58764ec3a8e4c2b9e52e4ddfe5ebbf7828260405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a15050565b611ea26129a2565b6119838383836133e1565b611eb86119c2612454565b6119cf61368a565b611ecb6118b5612454565b611f0f848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250612c23915050565b50505050565b60005461010090046001600160a01b031690565b60078054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561162c5780601f106116015761010080835404028352916020019161162c565b611f956119c2612454565b611f9e816136c8565b50565b6000611fab612454565b9050611fb6816124aa565b6001600160a01b0381166000818152600b6020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b6119f88282613714565b600b6020526000908152604090205460ff1681565b6000611598826137f0565b6120316129a2565b611f0f848484846137fa565b6000612069827f0000000000000000000000000000000000000000000000000000000000000000612409565b1561209f576000828152600460205260409020546001600160a01b031615612092576001612095565b60005b60ff16905061159b565b5060008181526003602052604090205461159b565b6120bf6119c2612454565b8483811480156120ce57508082145b61211f576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b818114611e145785858281811061213557fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a8581811061216057fe5b905060200201356001600160a01b031687878681811061217c57fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b1580156121d957600080fd5b505af11580156121ed573d6000803e3d6000fd5b50505050806001019050612122565b6060612206613808565b905090565b6000612237827f0000000000000000000000000000000000000000000000000000000000000000612409565b612280576040805162461bcd60e51b8152602060048201526015602482015274125b9d995b9d1bdc9e4e881b9bdd08185b88139195605a1b604482015290519081900360640190fd5b611598827f000000000000000000000000000000000000000000000000000000000000000061384c565b6000818152600460205260409020546060906001600160a01b0316612314576040805162461bcd60e51b815260206004820152601b60248201527a125b9d995b9d1bdc9e4e881b9bdb8b595e1a5cdd1a5b99c8139195602a1b604482015290519081900360640190fd5b61159882611965565b6123286119c2612454565b611f9e81613862565b61233c6118b5612454565b611e1488888888888888886139b7565b60006123588383613ce9565b9392505050565b6123676129a2565b6119b08585858585613d17565b61237c6129a2565b6119f88282613e87565b6123916119c2612454565b6000805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b0384811682810293909317808555604051939492900416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6123fe6129a2565b6119838383836140e2565b6000600160ff1b8316158015906123585750612424826143c5565b909216151592915050565b60006001600160e01b031982166318167c6d60e21b14806115985750611598826143d6565b6000612206614431565b6000816001600160a01b0316836001600160a01b031614806123585750506001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6001600160a01b0381166000908152600b602052604090205460ff16611f9e576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b03841661256c576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b8251825181146125b1576040805162461bcd60e51b815260206004820152601e6024820152600080516020615df6833981519152604482015290519081900360640190fd5b6000806000805b84811461278f5760008882815181106125cd57fe5b6020026020010151905060008883815181106125e557fe5b602002602001015190506125f8826137f0565b1561260d576126088b8383614591565b612785565b612637827f0000000000000000000000000000000000000000000000000000000000000000612409565b15612738576126498b8383600161467b565b60405182906001600160a01b038d1690600090600080516020615e16833981519152908290a4600061269b837f000000000000000000000000000000000000000000000000000000000000000061384c565b9050866126ae5780965060019550612732565b86811461272b57856002600089815260200190815260200160002060008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008282540192505081905550856003600089815260200190815260200160002060008282540192505081905550809650858501945060019550612732565b8560010195505b50612785565b6040805162461bcd60e51b815260206004820152601960248201527f496e76656e746f72793a206e6f74206120746f6b656e20696400000000000000604482015290519081900360640190fd5b50506001016125b8565b5082156127e45760008381526002602090815260408083206001600160a01b038c1680855290835281842080548701905586845260038352818420805487019055835260089091529020805491830191820190555b6001600160a01b03881660006127f8612454565b6001600160a01b0316600080516020615d968339815191528a8a604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561285657818101518382015260200161283e565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561289557818101518382015260200161287d565b5050505090500194505050505060405180910390a46128bc886001600160a01b03166147c8565b15611e1457611e146000898989896147ce565b6060600a6128dc836149bb565b604051602001808380546001816001161561010002031660029004801561293a5780601f1061291857610100808354040283529182019161293a565b820191906000526020600020905b815481529060010190602001808311612926575b5050825160208401908083835b602083106129665780518252601f199092019160209182019101612947565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529050919050565b60005460ff16156119cf576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60006129f7612454565b90506000612a05858361245e565b9050612a10846137f0565b15612a2657612a2185858584614a96565b612a8a565b612a50847f0000000000000000000000000000000000000000000000000000000000000000612409565b1561273857612a63858585846000614bd8565b60405184906000906001600160a01b03881690600080516020615e16833981519152908390a45b60006001600160a01b0316856001600160a01b0316836001600160a01b0316600080516020615db68339815191528787604051808381526020018281526020019250505060405180910390a45050505050565b611983838383604051806020016040528060008152506000614d8b565b6119b08585858585614ed3565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015612b4057600080fd5b505afa158015612b54573d6000803e3d6000fd5b505050506040513d6020811015612b6a57600080fd5b50516001600160a01b03828116911614611f9e576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b612bd36151ea565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612c06612454565b604080516001600160a01b039092168252519081900360200190a1565b6001600160a01b038416612c78576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b612ca2837f0000000000000000000000000000000000000000000000000000000000000000612409565b612ceb576040805162461bcd60e51b8152602060048201526015602482015274125b9d995b9d1bdc9e4e881b9bdd08185b88139195605a1b604482015290519081900360640190fd5b612cf984846001600061467b565b60405183906001600160a01b03861690600090600080516020615e16833981519152908290a46001600160a01b0384166000612d33612454565b6001600160a01b0316600080516020615db6833981519152866001604051808381526020018281526020019250505060405180910390a4612d7c846001600160a01b03166147c8565b15611f0f57612d8a84615238565b15612da357612d9e600085856001866152b9565b611f0f565b8015611f0f57611f0f60008585856153a2565b611983838383604051806020016040528060008152506001614d8b565b6001600160a01b038216612e28576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b805160008167ffffffffffffffff81118015612e4357600080fd5b50604051908082528060200260200182016040528015612e6d578160200160208202803683370190505b50905060008060005b848114612ff9576000868281518110612e8b57fe5b60200260200101519050612ec87f00000000000000000000000000000000000000000000000000000000000000008261240990919063ffffffff16565b612f11576040805162461bcd60e51b8152602060048201526015602482015274125b9d995b9d1bdc9e4e881b9bdd08185b88139195605a1b604482015290519081900360640190fd5b6001858381518110612f1f57fe5b602002602001018181525050612f38888260018061467b565b60405181906001600160a01b038a1690600090600080516020615e16833981519152908290a46000612f8a827f000000000000000000000000000000000000000000000000000000000000000061384c565b905084612f9d5780945060019350612fef565b848114612fe85760008581526002602090815260408083206001600160a01b038d16845282528083208054880190559682526003905294909420805490930190925560019183612fef565b8360010193505b5050600101612e76565b5060008281526002602090815260408083206001600160a01b038a1680855290835281842080548601905585845260038352818420805486019055808452600890925282208054870190559061304d612454565b6001600160a01b0316600080516020615d968339815191528887604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156130ab578181015183820152602001613093565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156130ea5781810151838201526020016130d2565b5050505090500194505050505060405180910390a4613111866001600160a01b03166147c8565b8015613121575061312186615238565b15613143576131436000878786604051806020016040528060008152506147ce565b505050505050565b6000613177827f0000000000000000000000000000000000000000000000000000000000000000612409565b156131c9576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b506000908152600560205260409020546001600160a01b031690565b6001600160a01b03841661323a576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b6000613244612454565b905061324f846137f0565b156132645761325f858585614591565b6132c7565b61328e847f0000000000000000000000000000000000000000000000000000000000000000612409565b15612738576132a0858585600061467b565b60405184906001600160a01b03871690600090600080516020615e16833981519152908290a45b604080518581526020810185905281516001600160a01b038089169360009391861692600080516020615db68339815191529281900390910190a4613314856001600160a01b03166147c8565b156119b0576119b06000868686866152b9565b6000818152600460205260408120546001600160a01b038116611598576040805162461bcd60e51b815260206004820152601b60248201527a125b9d995b9d1bdc9e4e881b9bdb8b595e1a5cdd1a5b99c8139195602a1b604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261198390849061550b565b815181518114613426576040805162461bcd60e51b815260206004820152601e6024820152600080516020615df6833981519152604482015290519081900360640190fd5b6000613430612454565b9050600061343e868361245e565b90506000806000805b86811461358157600089828151811061345c57fe5b6020026020010151905061346f816137f0565b15613498576134938b828b858151811061348557fe5b602002602001015189614a96565b613578565b6134c2817f0000000000000000000000000000000000000000000000000000000000000000612409565b15612738576134e88b828b85815181106134d857fe5b6020026020010151896001614bd8565b60405181906000906001600160a01b038e1690600080516020615e16833981519152908390a4600061353a827f000000000000000000000000000000000000000000000000000000000000000061384c565b90508561354d5780955060019450613576565b85811461356f5761355f8c87876156ee565b9450600193929092019184613576565b8460010194505b505b50600101613447565b5082156135b7576135938984846156ee565b6001600160a01b038916600090815260086020526040902080549183019182900390555b60006001600160a01b0316896001600160a01b0316866001600160a01b0316600080516020615d968339815191528b8b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561362b578181015183820152602001613613565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561366a578181015183820152602001613652565b5050505090500194505050505060405180910390a4505050505050505050565b6136926129a2565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612c06612454565b6001600160a01b0381166000818152600b6020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b600061371e612454565b9050806001600160a01b0316836001600160a01b03161415613782576040805162461bcd60e51b8152602060048201526018602482015277125b9d995b9d1bdc9e4e881cd95b198b585c1c1c9bdd985b60421b604482015290519081900360640190fd5b6001600160a01b03818116600081815260016020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b600160ff1b161590565b611f0f848484846001614d8b565b606061381261572e565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b6000613857826143c5565b198316905092915050565b61388c817f0000000000000000000000000000000000000000000000000000000000000000612409565b156138de576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a206e6f74206120636f6c6c656374696f6e0000000000604482015290519081900360640190fd5b6000818152600560205260409020546001600160a01b031615613948576040805162461bcd60e51b815260206004820152601e60248201527f496e76656e746f72793a206578697374696e6720636f6c6c656374696f6e0000604482015290519081900360640190fd5b613950612454565b600082815260056020526040902080546001600160a01b0319166001600160a01b0392909216919091179055613985816137f0565b1515817f4ebf8ad0df535ba5e487bc9cb27fe44120ca81c3a95d3eba79c0bd1df2ab2d5d60405160405180910390a350565b8685811480156139c657508084145b613a05576040805162461bcd60e51b815260206004820152601e6024820152600080516020615df6833981519152604482015290519081900360640190fd5b6000613a0f612454565b905060005b828114613cdc5760008b8b83818110613a2957fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b03161415613a9d576040805162461bcd60e51b8152602060048201526017602482015276496e76656e746f72793a206d696e7420746f207a65726f60481b604482015290519081900360640190fd5b60008a8a84818110613aab57fe5b9050602002013590506000898985818110613ac257fe5b905060200201359050613ad4826137f0565b15613b7f57613ae4838383614591565b604080518381526020810183905281516001600160a01b0380871693600093918a1692600080516020615db68339815191529281900390910190a4613b31836001600160a01b03166147c8565b15613b7a57613b7a60008484848c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506152b992505050565b613cce565b613ba9827f0000000000000000000000000000000000000000000000000000000000000000612409565b1561273857613bbb838383600061467b565b60405182906001600160a01b03851690600090600080516020615e16833981519152908290a4604080518381526001602082015281516001600160a01b0380871693600093918a1692600080516020615db68339815191529281900390910190a4613c2e836001600160a01b03166147c8565b15613b7a57613c3c83615238565b15613c8b57613c866000848460018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506152b992505050565b613b7a565b613b7a600084848b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506153a292505050565b505050806001019050613a14565b5050505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6000613d21612454565b90506001600160a01b038516613d7c576040805162461bcd60e51b815260206004820152601b60248201527a496e76656e746f72793a207472616e7366657220746f207a65726f60281b604482015290519081900360640190fd5b6000613d88878361245e565b9050613d93856137f0565b15613daa57613da58787878785615891565b613e18565b613dd4857f0000000000000000000000000000000000000000000000000000000000000000612409565b1561273857613de8878787878560006159ea565b84866001600160a01b0316886001600160a01b0316600080516020615e1683398151915260405160405180910390a45b856001600160a01b0316876001600160a01b0316836001600160a01b0316600080516020615db68339815191528888604051808381526020018281526020019250505060405180910390a4613e75866001600160a01b03166147c8565b1561195c5761195c87878787876152b9565b6000613e91612454565b90506000613e9f848361245e565b835190915060008167ffffffffffffffff81118015613ebd57600080fd5b50604051908082528060200260200182016040528015613ee7578160200160208202803683370190505b50905060008060005b848114613fde576000888281518110613f0557fe5b602002602001015190506001858381518110613f1d57fe5b602002602001018181525050613f4a8a82878581518110613f3a57fe5b60200260200101518a6001614bd8565b60405181906000906001600160a01b038d1690600080516020615e16833981519152908390a46000613f9c827f000000000000000000000000000000000000000000000000000000000000000061384c565b905084613faf5780945060019350613fd4565b848114613fcd57613fc18b86866156ee565b80945060019350613fd4565b8360010193505b5050600101613ef0565b50811561401057613ff08883836156ee565b6001600160a01b0388166000908152600860205260409020805485900390555b60006001600160a01b0316886001600160a01b0316876001600160a01b0316600080516020615d968339815191528a87604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561408457818101518382015260200161406c565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156140c35781810151838201526020016140ab565b5050505090500194505050505060405180910390a45050505050505050565b6001600160a01b03821661413b576040805162461bcd60e51b815260206004820152601b60248201527a496e76656e746f72793a207472616e7366657220746f207a65726f60281b604482015290519081900360640190fd5b6000614145612454565b90506000614153858361245e565b835190915060008167ffffffffffffffff8111801561417157600080fd5b5060405190808252806020026020018201604052801561419b578160200160208202803683370190505b50905060008060005b84811461428b5760008882815181106141b957fe5b6020026020010151905060018583815181106141d157fe5b6020026020010181815250506141ed8b8b8360018b60016159ea565b808a6001600160a01b03168c6001600160a01b0316600080516020615e1683398151915260405160405180910390a46000614248827f000000000000000000000000000000000000000000000000000000000000000061384c565b90508461425b5780945060019350614281565b84811461427a5761426e8c8c8787615b82565b80945060019350614281565b8360010193505b50506001016141a4565b5081156142a95761429e89898484615b82565b6142a9898986615bd6565b876001600160a01b0316896001600160a01b03166142c5612454565b6001600160a01b0316600080516020615d968339815191528a87604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561432357818101518382015260200161430b565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561436257818101518382015260200161434a565b5050505090500194505050505060405180910390a4614389886001600160a01b03166147c8565b8015614399575061439988615238565b156143ba576143ba89898986604051806020016040528060008152506147ce565b505050505050505050565b6001610100919091031b6000190190565b60006001600160e01b031982166380ac58cd60e01b148061440757506001600160e01b03198216635b5e139f60e01b145b8061442257506001600160e01b0319821663f3993d1160e01b145b80611598575061159882615c21565b6000338161443d615ca5565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614806144b057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b156144be5791506116349050565b6001600160a01b038216321480159061457d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561455057600080fd5b505afa158015614564573d6000803e3d6000fd5b505050506040513d602081101561457a57600080fd5b50515b1561458b5791506116349050565b50905090565b806145db576040805162461bcd60e51b8152602060048201526015602482015274496e76656e746f72793a207a65726f2076616c756560581b604482015290519081900360640190fd5b600082815260036020526040902054818101818111614641576040805162461bcd60e51b815260206004820152601a60248201527f496e76656e746f72793a20737570706c79206f766572666c6f77000000000000604482015290519081900360640190fd5b600093845260036020908152604080862092909255600281528185206001600160a01b039096168552949094525091902080549091019055565b816001146146cd576040805162461bcd60e51b815260206004820152601a602482015279496e76656e746f72793a2077726f6e67204e46542076616c756560301b604482015290519081900360640190fd5b6000838152600460205260409020541561472e576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206578697374696e672f6275726e74204e4654000000604482015290519081900360640190fd5b60008381526004602052604090206001600160a01b038516905580611f0f576000614779847f000000000000000000000000000000000000000000000000000000000000000061384c565b600090815260036020908152604080832080546001908101909155600283528184206001600160a01b038a16855283528184208054820190556008909252909120805490910190555050505050565b3b151590565b63bc197c8160e01b6001600160a01b03851663bc197c816147ed612454565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561486657818101518382015260200161484e565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156148a557818101518382015260200161488d565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156148e15781810151838201526020016148c9565b50505050905090810190601f16801561490e5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561493357600080fd5b505af1158015614947573d6000803e3d6000fd5b505050506040513d602081101561495d57600080fd5b50516001600160e01b031916146119b0576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220726566757365640000000000604482015290519081900360640190fd5b6060816149e057506040805180820190915260018152600360fc1b602082015261159b565b8160005b81156149f857600101600a820491506149e4565b60008167ffffffffffffffff81118015614a1157600080fd5b506040519080825280601f01601f191660200182016040528015614a3c576020820181803683370190505b50859350905060001982015b8315614a8d57600a840660300160f81b82828060019003935081518110614a6b57fe5b60200101906001600160f81b031916908160001a905350600a84049350614a48565b50949350505050565b81614ae0576040805162461bcd60e51b8152602060048201526015602482015274496e76656e746f72793a207a65726f2076616c756560581b604482015290519081900360640190fd5b80614b20576040805162461bcd60e51b815260206004820152601e6024820152600080516020615dd6833981519152604482015290519081900360640190fd5b60008381526002602090815260408083206001600160a01b038816845290915290205482811015614b98576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365000000604482015290519081900360640190fd5b60008481526002602090815260408083206001600160a01b0390981683529681528682209285900390925593845260039052509190208054919091039055565b82600114614c2a576040805162461bcd60e51b815260206004820152601a602482015279496e76656e746f72793a2077726f6e67204e46542076616c756560301b604482015290519081900360640190fd5b6000848152600460205260409020546001600160a01b0386811690821614614c94576040805162461bcd60e51b8152602060048201526018602482015277125b9d995b9d1bdc9e4e881b9bdb8b5bdddb99590813919560421b604482015290519081900360640190fd5b82614d1357600160a01b811615801590614cd457506000858152600960205260409020546001600160a01b0316614cc9612454565b6001600160a01b0316145b614d13576040805162461bcd60e51b815260206004820152601e6024820152600080516020615dd6833981519152604482015290519081900360640190fd5b600085815260046020526040902061dead60f01b90558161314357614d6386614d5c877f000000000000000000000000000000000000000000000000000000000000000061384c565b60016156ee565b6001600160a01b03861660009081526008602052604090208054600019019055505050505050565b6001600160a01b038416614de4576040805162461bcd60e51b815260206004820152601b60248201527a496e76656e746f72793a207472616e7366657220746f207a65726f60281b604482015290519081900360640190fd5b6000614dee612454565b90506000614dfc878361245e565b9050614e0e87878760018560006159ea565b84866001600160a01b0316886001600160a01b0316600080516020615e1683398151915260405160405180910390a4856001600160a01b0316876001600160a01b0316836001600160a01b0316600080516020615db6833981519152886001604051808381526020018281526020019250505060405180910390a4614e9b866001600160a01b03166147c8565b1561195c57614ea986615238565b15614ec157614ebc8787876001886152b9565b61195c565b821561195c5761195c878787876153a2565b6001600160a01b038416614f2c576040805162461bcd60e51b815260206004820152601b60248201527a496e76656e746f72793a207472616e7366657220746f207a65726f60281b604482015290519081900360640190fd5b825182518114614f71576040805162461bcd60e51b815260206004820152601e6024820152600080516020615df6833981519152604482015290519081900360640190fd5b6000614f7b612454565b90506000614f89888361245e565b90506000806000805b8681146150d85760008a8281518110614fa757fe5b60200260200101519050614fba816137f0565b15614fe457614fdf8d8d838d8681518110614fd157fe5b60200260200101518a615891565b6150cf565b61500e817f0000000000000000000000000000000000000000000000000000000000000000612409565b15612738576150358d8d838d868151811061502557fe5b60200260200101518a60016159ea565b808c6001600160a01b03168e6001600160a01b0316600080516020615e1683398151915260405160405180910390a46000615090827f000000000000000000000000000000000000000000000000000000000000000061384c565b9050856150a357809550600194506150cd565b8581146150c6576150b68e8e8888615b82565b94506001939290920191846150cd565b8460010194505b505b50600101614f92565b5082156150f8576150eb8b8b8585615b82565b81016150f88b8b83615bd6565b896001600160a01b03168b6001600160a01b0316615114612454565b6001600160a01b0316600080516020615d968339815191528c8c604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561517257818101518382015260200161515a565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156151b1578181015183820152602001615199565b5050505090500194505050505060405180910390a46151d88a6001600160a01b03166147c8565b15613cdc57613cdc8b8b8b8b8b6147ce565b60005460ff166119cf576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b60408051630271189760e51b6024808301919091528251808303909101815260449091018252602081810180516001600160e01b03166301ffc9a760e01b1781528251935160008082529485948594909392908183858b612710fa955080519450505050609e5a116152a657fe5b8280156152b05750815b95945050505050565b63f23a6e6160e01b6001600160a01b03851663f23a6e616152d8612454565b888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561535257818101518382015260200161533a565b50505050905090810190601f16801561537f5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561493357600080fd5b630a85bd0160e11b6001600160a01b03841663150b7a026153c1612454565b8786866040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561543457818101518382015260200161541c565b50505050905090810190601f1680156154615780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561548357600080fd5b505af1158015615497573d6000803e3d6000fd5b505050506040513d60208110156154ad57600080fd5b50516001600160e01b03191614611f0f576040805162461bcd60e51b815260206004820152601b60248201527f496e76656e746f72793a207472616e7366657220726566757365640000000000604482015290519081900360640190fd5b8161551e6001600160a01b0382166147c8565b61556f576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b602083106155ac5780518252601f19909201916020918201910161558d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461560e576040519150601f19603f3d011682016040523d82523d6000602084013e615613565b606091505b509150915081156156925780511561568d5780806020019051602081101561563a57600080fd5b505161568d576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b6119b0565b80516156e5576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b60008281526002602090815260408083206001600160a01b0390961683529481528482208054849003905592815260039092529190208054919091039055565b366000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681148061579a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b156157b1576157a7615cb1565b925092505061588d565b6001600160a01b038116321480159061587757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d66157fc615ca5565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561584a57600080fd5b505afa15801561585e573d6000803e3d6000fd5b505050506040513d602081101561587457600080fd5b50515b15615884576157a7615cb1565b60003692509250505b9091565b806158d1576040805162461bcd60e51b815260206004820152601e6024820152600080516020615dd6833981519152604482015290519081900360640190fd5b8161591b576040805162461bcd60e51b8152602060048201526015602482015274496e76656e746f72793a207a65726f2076616c756560581b604482015290519081900360640190fd5b60008381526002602090815260408083206001600160a01b038916845290915290205482811015615993576040805162461bcd60e51b815260206004820152601d60248201527f496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365000000604482015290519081900360640190fd5b846001600160a01b0316866001600160a01b0316146131435760009384526002602090815260408086206001600160a01b039889168752909152808520918490039091559390941682529190208054909101905550565b82600114615a3c576040805162461bcd60e51b815260206004820152601a602482015279496e76656e746f72793a2077726f6e67204e46542076616c756560301b604482015290519081900360640190fd5b6000848152600460205260409020546001600160a01b0387811690821614615aa6576040805162461bcd60e51b8152602060048201526018602482015277125b9d995b9d1bdc9e4e881b9bdb8b5bdddb99590813919560421b604482015290519081900360640190fd5b82615b2557600160a01b811615801590615ae657506000858152600960205260409020546001600160a01b0316615adb612454565b6001600160a01b0316145b615b25576040805162461bcd60e51b815260206004820152601e6024820152600080516020615dd6833981519152604482015290519081900360640190fd5b60008581526004602052604090206001600160a01b03871690558161195c57615b5087876001615bd6565b61195c8787615b7f887f000000000000000000000000000000000000000000000000000000000000000061384c565b60015b826001600160a01b0316846001600160a01b031614611f0f5760009182526002602090815260408084206001600160a01b039687168552909152808320805483900390559290931681522080549091019055565b816001600160a01b0316836001600160a01b031614611983576001600160a01b0380841660009081526008602052604080822080548590039055918416815220805482019055505050565b60006001600160e01b031982166301ffc9a760e01b1480615c5257506001600160e01b03198216636cdb3d1360e11b145b80615c6d57506001600160e01b031982166303a24d0760e21b145b80615c8857506001600160e01b031982166304e72e2360e11b145b806115985750506001600160e01b03191663bd85b03960e01b1490565b60131936013560601c90565b366000615cc46013198301828481615d6d565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282615d025760008555615d48565b82601f10615d1b5782800160ff19823516178555615d48565b82800160010185558215615d48579182015b82811115615d48578235825591602001919060010190615d2d565b50615d54929150615d58565b5090565b5b80821115615d545760008155600101615d59565b60008085851115615d7c578182fd5b83861115615d88578182fd5b505082019391909203915056fe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fbc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62496e76656e746f72793a206e6f6e2d617070726f7665642073656e6465720000496e76656e746f72793a20696e636f6e73697374656e74206172726179730000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a516098a60208cb24181b079cc104a08abb49542fff3fd9021d680609a669c3f64736f6c63430007060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x294 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7E518EC8 GT PUSH2 0x167 JUMPI DUP1 PUSH4 0xBD85B039 GT PUSH2 0xCE JUMPI DUP1 PUSH4 0xE8AB9CCC GT PUSH2 0x87 JUMPI DUP1 PUSH4 0xE8AB9CCC EQ PUSH2 0x10A7 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x1205 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x1233 JUMPI DUP1 PUSH4 0xF2472965 EQ PUSH2 0x12FC JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x13AD JUMPI DUP1 PUSH4 0xF3993D11 EQ PUSH2 0x13D3 JUMPI PUSH2 0x294 JUMP JUMPDEST DUP1 PUSH4 0xBD85B039 EQ PUSH2 0xF1D JUMPI DUP1 PUSH4 0xC3666C36 EQ PUSH2 0xF3A JUMPI DUP1 PUSH4 0xC4C2BFDC EQ PUSH2 0x1048 JUMPI DUP1 PUSH4 0xC7778BAA EQ PUSH2 0x1050 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x106D JUMPI DUP1 PUSH4 0xD0011D9D EQ PUSH2 0x108A JUMPI PUSH2 0x294 JUMP JUMPDEST DUP1 PUSH4 0x983B2D56 GT PUSH2 0x120 JUMPI DUP1 PUSH4 0x983B2D56 EQ PUSH2 0xDBA JUMPI DUP1 PUSH4 0x98650275 EQ PUSH2 0xDE0 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0xDE8 JUMPI DUP1 PUSH4 0xAA271E1A EQ PUSH2 0xE16 JUMPI DUP1 PUSH4 0xADEBF6F2 EQ PUSH2 0xE3C JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0xE59 JUMPI PUSH2 0x294 JUMP JUMPDEST DUP1 PUSH4 0x7E518EC8 EQ PUSH2 0xB7E JUMPI DUP1 PUSH4 0x80534934 EQ PUSH2 0xBEC JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0xD1F JUMPI DUP1 PUSH4 0x8832E6E3 EQ PUSH2 0xD27 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xDAA JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0xDB2 JUMPI PUSH2 0x294 JUMP JUMPDEST DUP1 PUSH4 0x40C10F19 GT PUSH2 0x20B JUMPI DUP1 PUSH4 0x5B2BD79E GT PUSH2 0x1C4 JUMPI DUP1 PUSH4 0x5B2BD79E EQ PUSH2 0x993 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x99B JUMPI DUP1 PUSH4 0x5CFA9297 EQ PUSH2 0x9A3 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0xA2D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xA4A JUMPI DUP1 PUSH4 0x73C8A958 EQ PUSH2 0xA70 JUMPI PUSH2 0x294 JUMP JUMPDEST DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x762 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x78E JUMPI DUP1 PUSH4 0x4684D7E9 EQ PUSH2 0x7C4 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x842 JUMPI DUP1 PUSH4 0x510B5158 EQ PUSH2 0x950 JUMPI DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x96D JUMPI PUSH2 0x294 JUMP JUMPDEST DUP1 PUSH4 0xD6A5BBB GT PUSH2 0x25D JUMPI DUP1 PUSH4 0xD6A5BBB EQ PUSH2 0x3F6 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x514 JUMPI DUP1 PUSH4 0x124D91E5 EQ PUSH2 0x531 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x563 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x599 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x75A JUMPI PUSH2 0x294 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x299 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x312 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x38F JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x3C8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x148D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x1573 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x31A PUSH2 0x15A0 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 0x354 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x33C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x381 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 0x3AC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1637 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 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x16D4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x40C 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 0x436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x448 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 0x469 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 0x486 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x498 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 0x4B9 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 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4E8 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 0x509 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x18AA JUMP JUMPDEST PUSH2 0x31A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x52A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1965 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x547 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 0x1970 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x579 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 0x1988 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x5AF 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 0x5E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5F4 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 0x615 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 0x664 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x676 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 0x697 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 0x6E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6F8 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 0x719 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 0x199B SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3F4 PUSH2 0x19B7 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x778 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x19D1 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x7A4 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 0x19FC JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x7DA 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 0x804 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x816 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 0x837 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1A0F JUMP JUMPDEST PUSH2 0x900 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x858 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x872 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x884 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 0x8A5 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 0x8C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x8D4 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 0x8F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1A57 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 0x93C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x924 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3AC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x966 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1B4B JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x983 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B56 JUMP JUMPDEST PUSH2 0x31A PUSH2 0x1BCF JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x1C5D JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x9B9 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 0x9EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA01 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 0xA22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1C66 JUMP JUMPDEST PUSH2 0x3AC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1CB3 JUMP JUMPDEST PUSH2 0x2C5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1CBE JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xA86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xAA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xAB2 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 0xAD3 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 0xAF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB02 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 0xB23 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 0xB40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB52 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 0xB73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1D31 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xBAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xBC0 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 0xBE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1E1E JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC02 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 0xC2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC3E 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 0xC5F 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 0xCAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCC0 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 0xCE1 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 0x1E9A SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3F4 PUSH2 0x1EAD JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xD3D 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 0xD6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD7E 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 0xD9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1EC0 JUMP JUMPDEST PUSH2 0x3AC PUSH2 0x1F15 JUMP JUMPDEST PUSH2 0x31A PUSH2 0x1F29 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1F8A JUMP JUMPDEST PUSH2 0x3F4 PUSH2 0x1FA1 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xDFE 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 0x1FFF JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2009 JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x201E JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xE6F 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 0xEA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xEBB 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 0xEDC 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 0x2029 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2C5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x203D JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xF50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xF6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xF7C 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 0xF9D 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 0xFBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xFCC 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 0xFED 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 0x100A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x101C 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 0x103D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x20B4 JUMP JUMPDEST PUSH2 0x31A PUSH2 0x21FC JUMP JUMPDEST PUSH2 0x2C5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1066 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x220B JUMP JUMPDEST PUSH2 0x31A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1083 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x22AA JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x231D JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x10BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x10D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x10E9 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 0x110A 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 0x1127 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1139 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 0x115A 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 0x1177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1189 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 0x11AA 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 0x11C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x11D9 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 0x11FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2331 JUMP JUMPDEST PUSH2 0x2FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x121B 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 0x234C JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x1249 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 0x1288 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x129A 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 0x12BB 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 0x235F SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1312 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 0x133C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x134E 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 0x136F 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 0x2374 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2386 JUMP JUMPDEST PUSH2 0x3F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x13E9 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 0x141C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x142E 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 0x144F 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 0x23F6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x14E4 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 0x496E76656E746F72793A207A65726F2061646472657373 PUSH1 0x48 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x150E DUP3 PUSH32 0x0 PUSH2 0x2409 JUMP JUMPDEST ISZERO PUSH2 0x1548 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 0x153B JUMPI PUSH1 0x0 PUSH2 0x153E JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x156D 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 0x1598 JUMPI POP PUSH2 0x1598 DUP3 PUSH2 0x242F 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 0x162C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1601 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x162C 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 0x160F 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 0x169F 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 PUSH27 0x125B9D995B9D1BDC9E4E881B9BDB8B595E1A5CDD1A5B99C8139195 PUSH1 0x2A SHL 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 0x16CA 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 0x159B JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x159B JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x1733 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 PUSH27 0x125B9D995B9D1BDC9E4E881B9BDB8B595E1A5CDD1A5B99C8139195 PUSH1 0x2A SHL 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 0x1790 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 PUSH24 0x125B9D995B9D1BDC9E4E881CD95B198B585C1C1C9BDD985B PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x17A1 DUP2 PUSH2 0x179C PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x245E JUMP JUMPDEST PUSH2 0x17E0 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DD6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x181A JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP3 AND ISZERO PUSH2 0x1815 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 0x1863 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 SHL DUP3 OR DUP1 DUP4 EQ PUSH2 0x183A 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 0x18BA PUSH2 0x18B5 PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x24AA JUMP JUMPDEST PUSH2 0x195C 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 0x2517 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1598 DUP3 PUSH2 0x28CF JUMP JUMPDEST PUSH2 0x1978 PUSH2 0x29A2 JUMP JUMPDEST PUSH2 0x1983 DUP4 DUP4 DUP4 PUSH2 0x29ED JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1990 PUSH2 0x29A2 JUMP JUMPDEST PUSH2 0x1983 DUP4 DUP4 DUP4 PUSH2 0x2ADD JUMP JUMPDEST PUSH2 0x19A3 PUSH2 0x29A2 JUMP JUMPDEST PUSH2 0x19B0 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x2AFA JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x19C7 PUSH2 0x19C2 PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x2B07 JUMP JUMPDEST PUSH2 0x19CF PUSH2 0x2BCB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x19DC PUSH2 0x18B5 PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x19F8 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x2C23 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x1A04 PUSH2 0x29A2 JUMP JUMPDEST PUSH2 0x1983 DUP4 DUP4 DUP4 PUSH2 0x2DB6 JUMP JUMPDEST PUSH2 0x1A1A PUSH2 0x18B5 PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x1983 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 0x2DD3 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 DUP3 EQ PUSH2 0x1A9B 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DF6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x1AB4 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 0x1ADE 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 0x1B41 JUMPI PUSH2 0x1B22 DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x1AFA 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 0x1B16 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x148D JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1B2E JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1AE4 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1598 DUP3 PUSH2 0x314B 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 0x1598 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 0x1C55 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1C2A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1C55 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 0x1C38 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x1C71 PUSH2 0x18B5 PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x19B0 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 0x31E5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1598 DUP3 PUSH2 0x3327 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1D15 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 0x496E76656E746F72793A207A65726F2061646472657373 PUSH1 0x48 SHL 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 0x1D3C PUSH2 0x19C2 PUSH2 0x2454 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x1D4B JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x1D9C 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 0x1E14 JUMPI PUSH2 0x1E0C DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x1DB5 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 0x1DD1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x1DE4 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 0x338F SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1D9F JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1E29 PUSH2 0x19C2 PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x1E35 PUSH1 0xA DUP4 DUP4 PUSH2 0x5CCC 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 PUSH2 0x1EA2 PUSH2 0x29A2 JUMP JUMPDEST PUSH2 0x1983 DUP4 DUP4 DUP4 PUSH2 0x33E1 JUMP JUMPDEST PUSH2 0x1EB8 PUSH2 0x19C2 PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x19CF PUSH2 0x368A JUMP JUMPDEST PUSH2 0x1ECB PUSH2 0x18B5 PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x1F0F 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 0x2C23 SWAP2 POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV 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 0x162C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1601 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x162C JUMP JUMPDEST PUSH2 0x1F95 PUSH2 0x19C2 PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x1F9E DUP2 PUSH2 0x36C8 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FAB PUSH2 0x2454 JUMP JUMPDEST SWAP1 POP PUSH2 0x1FB6 DUP2 PUSH2 0x24AA 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 0x19F8 DUP3 DUP3 PUSH2 0x3714 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 0x1598 DUP3 PUSH2 0x37F0 JUMP JUMPDEST PUSH2 0x2031 PUSH2 0x29A2 JUMP JUMPDEST PUSH2 0x1F0F DUP5 DUP5 DUP5 DUP5 PUSH2 0x37FA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2069 DUP3 PUSH32 0x0 PUSH2 0x2409 JUMP JUMPDEST ISZERO PUSH2 0x209F 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 0x2092 JUMPI PUSH1 0x1 PUSH2 0x2095 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x159B JUMP JUMPDEST POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x159B JUMP JUMPDEST PUSH2 0x20BF PUSH2 0x19C2 PUSH2 0x2454 JUMP JUMPDEST DUP5 DUP4 DUP2 EQ DUP1 ISZERO PUSH2 0x20CE JUMPI POP DUP1 DUP3 EQ JUMPDEST PUSH2 0x211F 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 0x1E14 JUMPI DUP6 DUP6 DUP3 DUP2 DUP2 LT PUSH2 0x2135 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 0x2160 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 0x217C 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 0x21D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x21ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x2122 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2206 PUSH2 0x3808 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2237 DUP3 PUSH32 0x0 PUSH2 0x2409 JUMP JUMPDEST PUSH2 0x2280 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 0x1598 DUP3 PUSH32 0x0 PUSH2 0x384C 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 0x2314 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 PUSH27 0x125B9D995B9D1BDC9E4E881B9BDB8B595E1A5CDD1A5B99C8139195 PUSH1 0x2A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1598 DUP3 PUSH2 0x1965 JUMP JUMPDEST PUSH2 0x2328 PUSH2 0x19C2 PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x1F9E DUP2 PUSH2 0x3862 JUMP JUMPDEST PUSH2 0x233C PUSH2 0x18B5 PUSH2 0x2454 JUMP JUMPDEST PUSH2 0x1E14 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x39B7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2358 DUP4 DUP4 PUSH2 0x3CE9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2367 PUSH2 0x29A2 JUMP JUMPDEST PUSH2 0x19B0 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x3D17 JUMP JUMPDEST PUSH2 0x237C PUSH2 0x29A2 JUMP JUMPDEST PUSH2 0x19F8 DUP3 DUP3 PUSH2 0x3E87 JUMP JUMPDEST PUSH2 0x2391 PUSH2 0x19C2 PUSH2 0x2454 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH21 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 NOT AND PUSH2 0x100 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND DUP3 DUP2 MUL SWAP4 SWAP1 SWAP4 OR DUP1 DUP6 SSTORE PUSH1 0x40 MLOAD SWAP4 SWAP5 SWAP3 SWAP1 DIV AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH2 0x23FE PUSH2 0x29A2 JUMP JUMPDEST PUSH2 0x1983 DUP4 DUP4 DUP4 PUSH2 0x40E2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF SHL DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2358 JUMPI POP PUSH2 0x2424 DUP3 PUSH2 0x43C5 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 0x1598 JUMPI POP PUSH2 0x1598 DUP3 PUSH2 0x43D6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2206 PUSH2 0x4431 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 0x2358 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 0x1F9E 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 0x256C 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 0x25B1 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DF6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x278F JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x25CD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x25E5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x25F8 DUP3 PUSH2 0x37F0 JUMP JUMPDEST ISZERO PUSH2 0x260D JUMPI PUSH2 0x2608 DUP12 DUP4 DUP4 PUSH2 0x4591 JUMP JUMPDEST PUSH2 0x2785 JUMP JUMPDEST PUSH2 0x2637 DUP3 PUSH32 0x0 PUSH2 0x2409 JUMP JUMPDEST ISZERO PUSH2 0x2738 JUMPI PUSH2 0x2649 DUP12 DUP4 DUP4 PUSH1 0x1 PUSH2 0x467B 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 0x5E16 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x269B DUP4 PUSH32 0x0 PUSH2 0x384C JUMP JUMPDEST SWAP1 POP DUP7 PUSH2 0x26AE JUMPI DUP1 SWAP7 POP PUSH1 0x1 SWAP6 POP PUSH2 0x2732 JUMP JUMPDEST DUP7 DUP2 EQ PUSH2 0x272B 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 0x2732 JUMP JUMPDEST DUP6 PUSH1 0x1 ADD SWAP6 POP JUMPDEST POP PUSH2 0x2785 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 POP POP PUSH1 0x1 ADD PUSH2 0x25B8 JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x27E4 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 0x27F8 PUSH2 0x2454 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x2856 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x283E 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 0x2895 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x287D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x28BC DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x47C8 JUMP JUMPDEST ISZERO PUSH2 0x1E14 JUMPI PUSH2 0x1E14 PUSH1 0x0 DUP10 DUP10 DUP10 DUP10 PUSH2 0x47CE JUMP JUMPDEST PUSH1 0x60 PUSH1 0xA PUSH2 0x28DC DUP4 PUSH2 0x49BB 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 0x293A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2918 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x293A 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 0x2926 JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2966 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2947 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 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x19CF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x14185D5CD8589B194E881C185D5CD959 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x29F7 PUSH2 0x2454 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2A05 DUP6 DUP4 PUSH2 0x245E JUMP JUMPDEST SWAP1 POP PUSH2 0x2A10 DUP5 PUSH2 0x37F0 JUMP JUMPDEST ISZERO PUSH2 0x2A26 JUMPI PUSH2 0x2A21 DUP6 DUP6 DUP6 DUP5 PUSH2 0x4A96 JUMP JUMPDEST PUSH2 0x2A8A JUMP JUMPDEST PUSH2 0x2A50 DUP5 PUSH32 0x0 PUSH2 0x2409 JUMP JUMPDEST ISZERO PUSH2 0x2738 JUMPI PUSH2 0x2A63 DUP6 DUP6 DUP6 DUP5 PUSH1 0x0 PUSH2 0x4BD8 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 0x5E16 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP4 SWAP1 LOG4 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DB6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x1983 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x4D8B JUMP JUMPDEST PUSH2 0x19B0 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x4ED3 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 0x2B40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B54 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 0x2B6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ PUSH2 0x1F9E 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 PUSH2 0x2BD3 PUSH2 0x51EA JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA PUSH2 0x2C06 PUSH2 0x2454 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 LOG1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2C78 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 0x2CA2 DUP4 PUSH32 0x0 PUSH2 0x2409 JUMP JUMPDEST PUSH2 0x2CEB 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 0x2CF9 DUP5 DUP5 PUSH1 0x1 PUSH1 0x0 PUSH2 0x467B 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 0x5E16 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 PUSH2 0x2D33 PUSH2 0x2454 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DB6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x2D7C DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x47C8 JUMP JUMPDEST ISZERO PUSH2 0x1F0F JUMPI PUSH2 0x2D8A DUP5 PUSH2 0x5238 JUMP JUMPDEST ISZERO PUSH2 0x2DA3 JUMPI PUSH2 0x2D9E PUSH1 0x0 DUP6 DUP6 PUSH1 0x1 DUP7 PUSH2 0x52B9 JUMP JUMPDEST PUSH2 0x1F0F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1F0F JUMPI PUSH2 0x1F0F PUSH1 0x0 DUP6 DUP6 DUP6 PUSH2 0x53A2 JUMP JUMPDEST PUSH2 0x1983 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x1 PUSH2 0x4D8B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2E28 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 0x2E43 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 0x2E6D 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 0x2FF9 JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2E8B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x2EC8 PUSH32 0x0 DUP3 PUSH2 0x2409 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x2F11 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 0x2F1F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x2F38 DUP9 DUP3 PUSH1 0x1 DUP1 PUSH2 0x467B 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 0x5E16 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP3 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x2F8A DUP3 PUSH32 0x0 PUSH2 0x384C JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x2F9D JUMPI DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x2FEF JUMP JUMPDEST DUP5 DUP2 EQ PUSH2 0x2FE8 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 0x2FEF JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x2E76 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 0x304D PUSH2 0x2454 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x30AB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3093 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 0x30EA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x30D2 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x3111 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x47C8 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3121 JUMPI POP PUSH2 0x3121 DUP7 PUSH2 0x5238 JUMP JUMPDEST ISZERO PUSH2 0x3143 JUMPI PUSH2 0x3143 PUSH1 0x0 DUP8 DUP8 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x47CE JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3177 DUP3 PUSH32 0x0 PUSH2 0x2409 JUMP JUMPDEST ISZERO PUSH2 0x31C9 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 0x323A 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 0x3244 PUSH2 0x2454 JUMP JUMPDEST SWAP1 POP PUSH2 0x324F DUP5 PUSH2 0x37F0 JUMP JUMPDEST ISZERO PUSH2 0x3264 JUMPI PUSH2 0x325F DUP6 DUP6 DUP6 PUSH2 0x4591 JUMP JUMPDEST PUSH2 0x32C7 JUMP JUMPDEST PUSH2 0x328E DUP5 PUSH32 0x0 PUSH2 0x2409 JUMP JUMPDEST ISZERO PUSH2 0x2738 JUMPI PUSH2 0x32A0 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x467B 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 0x5E16 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DB6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x3314 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x47C8 JUMP JUMPDEST ISZERO PUSH2 0x19B0 JUMPI PUSH2 0x19B0 PUSH1 0x0 DUP7 DUP7 DUP7 DUP7 PUSH2 0x52B9 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 0x1598 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 PUSH27 0x125B9D995B9D1BDC9E4E881B9BDB8B595E1A5CDD1A5B99C8139195 PUSH1 0x2A SHL 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x1983 SWAP1 DUP5 SWAP1 PUSH2 0x550B JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x3426 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DF6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3430 PUSH2 0x2454 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x343E DUP7 DUP4 PUSH2 0x245E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP7 DUP2 EQ PUSH2 0x3581 JUMPI PUSH1 0x0 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x345C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x346F DUP2 PUSH2 0x37F0 JUMP JUMPDEST ISZERO PUSH2 0x3498 JUMPI PUSH2 0x3493 DUP12 DUP3 DUP12 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x3485 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 PUSH2 0x4A96 JUMP JUMPDEST PUSH2 0x3578 JUMP JUMPDEST PUSH2 0x34C2 DUP2 PUSH32 0x0 PUSH2 0x2409 JUMP JUMPDEST ISZERO PUSH2 0x2738 JUMPI PUSH2 0x34E8 DUP12 DUP3 DUP12 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x34D8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 PUSH1 0x1 PUSH2 0x4BD8 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 0x5E16 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP4 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x353A DUP3 PUSH32 0x0 PUSH2 0x384C JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x354D JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x3576 JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x356F JUMPI PUSH2 0x355F DUP13 DUP8 DUP8 PUSH2 0x56EE JUMP JUMPDEST SWAP5 POP PUSH1 0x1 SWAP4 SWAP3 SWAP1 SWAP3 ADD SWAP2 DUP5 PUSH2 0x3576 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x3447 JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x35B7 JUMPI PUSH2 0x3593 DUP10 DUP5 DUP5 PUSH2 0x56EE 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x362B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3613 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 0x366A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3652 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 0x3692 PUSH2 0x29A2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x2C06 PUSH2 0x2454 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 0x371E PUSH2 0x2454 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 0x3782 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 PUSH24 0x125B9D995B9D1BDC9E4E881CD95B198B585C1C1C9BDD985B PUSH1 0x42 SHL 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 0x1 PUSH1 0xFF SHL AND ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x1F0F DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x4D8B JUMP JUMPDEST PUSH1 0x60 PUSH2 0x3812 PUSH2 0x572E 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 PUSH1 0x0 PUSH2 0x3857 DUP3 PUSH2 0x43C5 JUMP JUMPDEST NOT DUP4 AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x388C DUP2 PUSH32 0x0 PUSH2 0x2409 JUMP JUMPDEST ISZERO PUSH2 0x38DE 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 0x3948 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 0x3950 PUSH2 0x2454 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x3985 DUP2 PUSH2 0x37F0 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 0x39C6 JUMPI POP DUP1 DUP5 EQ JUMPDEST PUSH2 0x3A05 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DF6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3A0F PUSH2 0x2454 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 EQ PUSH2 0x3CDC JUMPI PUSH1 0x0 DUP12 DUP12 DUP4 DUP2 DUP2 LT PUSH2 0x3A29 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 0x3A9D 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 0x3AAB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP PUSH1 0x0 DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x3AC2 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP PUSH2 0x3AD4 DUP3 PUSH2 0x37F0 JUMP JUMPDEST ISZERO PUSH2 0x3B7F JUMPI PUSH2 0x3AE4 DUP4 DUP4 DUP4 PUSH2 0x4591 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DB6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x3B31 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x47C8 JUMP JUMPDEST ISZERO PUSH2 0x3B7A JUMPI PUSH2 0x3B7A 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 0x52B9 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x3CCE JUMP JUMPDEST PUSH2 0x3BA9 DUP3 PUSH32 0x0 PUSH2 0x2409 JUMP JUMPDEST ISZERO PUSH2 0x2738 JUMPI PUSH2 0x3BBB DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x467B 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 0x5E16 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DB6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x3C2E DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x47C8 JUMP JUMPDEST ISZERO PUSH2 0x3B7A JUMPI PUSH2 0x3C3C DUP4 PUSH2 0x5238 JUMP JUMPDEST ISZERO PUSH2 0x3C8B JUMPI PUSH2 0x3C86 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 0x52B9 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x3B7A JUMP JUMPDEST PUSH2 0x3B7A 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 0x53A2 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x3A14 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP 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 PUSH1 0x0 PUSH2 0x3D21 PUSH2 0x2454 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x3D7C 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 PUSH27 0x496E76656E746F72793A207472616E7366657220746F207A65726F PUSH1 0x28 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3D88 DUP8 DUP4 PUSH2 0x245E JUMP JUMPDEST SWAP1 POP PUSH2 0x3D93 DUP6 PUSH2 0x37F0 JUMP JUMPDEST ISZERO PUSH2 0x3DAA JUMPI PUSH2 0x3DA5 DUP8 DUP8 DUP8 DUP8 DUP6 PUSH2 0x5891 JUMP JUMPDEST PUSH2 0x3E18 JUMP JUMPDEST PUSH2 0x3DD4 DUP6 PUSH32 0x0 PUSH2 0x2409 JUMP JUMPDEST ISZERO PUSH2 0x2738 JUMPI PUSH2 0x3DE8 DUP8 DUP8 DUP8 DUP8 DUP6 PUSH1 0x0 PUSH2 0x59EA 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 0x5E16 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DB6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x3E75 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x47C8 JUMP JUMPDEST ISZERO PUSH2 0x195C JUMPI PUSH2 0x195C DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x52B9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E91 PUSH2 0x2454 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3E9F DUP5 DUP4 PUSH2 0x245E JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3EBD 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 0x3EE7 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 0x3FDE JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3F05 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x1 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3F1D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x3F4A DUP11 DUP3 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x3F3A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP11 PUSH1 0x1 PUSH2 0x4BD8 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 0x5E16 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 DUP4 SWAP1 LOG4 PUSH1 0x0 PUSH2 0x3F9C DUP3 PUSH32 0x0 PUSH2 0x384C JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x3FAF JUMPI DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x3FD4 JUMP JUMPDEST DUP5 DUP2 EQ PUSH2 0x3FCD JUMPI PUSH2 0x3FC1 DUP12 DUP7 DUP7 PUSH2 0x56EE JUMP JUMPDEST DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x3FD4 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x3EF0 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x4010 JUMPI PUSH2 0x3FF0 DUP9 DUP4 DUP4 PUSH2 0x56EE 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x4084 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x406C 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 0x40C3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x40AB 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x413B 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 PUSH27 0x496E76656E746F72793A207472616E7366657220746F207A65726F PUSH1 0x28 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4145 PUSH2 0x2454 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4153 DUP6 DUP4 PUSH2 0x245E JUMP JUMPDEST DUP4 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x4171 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 0x419B 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 0x428B JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x41B9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x1 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x41D1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x41ED DUP12 DUP12 DUP4 PUSH1 0x1 DUP12 PUSH1 0x1 PUSH2 0x59EA 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 0x5E16 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x0 PUSH2 0x4248 DUP3 PUSH32 0x0 PUSH2 0x384C JUMP JUMPDEST SWAP1 POP DUP5 PUSH2 0x425B JUMPI DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x4281 JUMP JUMPDEST DUP5 DUP2 EQ PUSH2 0x427A JUMPI PUSH2 0x426E DUP13 DUP13 DUP8 DUP8 PUSH2 0x5B82 JUMP JUMPDEST DUP1 SWAP5 POP PUSH1 0x1 SWAP4 POP PUSH2 0x4281 JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x41A4 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x42A9 JUMPI PUSH2 0x429E DUP10 DUP10 DUP5 DUP5 PUSH2 0x5B82 JUMP JUMPDEST PUSH2 0x42A9 DUP10 DUP10 DUP7 PUSH2 0x5BD6 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x42C5 PUSH2 0x2454 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x4323 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x430B 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 0x4362 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x434A JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x4389 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x47C8 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x4399 JUMPI POP PUSH2 0x4399 DUP9 PUSH2 0x5238 JUMP JUMPDEST ISZERO PUSH2 0x43BA JUMPI PUSH2 0x43BA DUP10 DUP10 DUP10 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x47CE JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP 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 0x4407 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x4422 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0xF3993D11 PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x1598 JUMPI POP PUSH2 0x1598 DUP3 PUSH2 0x5C21 JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x443D PUSH2 0x5CA5 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 0x44B0 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 0x44BE JUMPI SWAP2 POP PUSH2 0x1634 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x457D 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 0x4550 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4564 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 0x457A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x458B JUMPI SWAP2 POP PUSH2 0x1634 SWAP1 POP JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x45DB 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 0x4641 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 0x46CD 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 PUSH26 0x496E76656E746F72793A2077726F6E67204E46542076616C7565 PUSH1 0x30 SHL 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 0x472E 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 0x1F0F JUMPI PUSH1 0x0 PUSH2 0x4779 DUP5 PUSH32 0x0 PUSH2 0x384C 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 EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH4 0xBC197C81 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0xBC197C81 PUSH2 0x47ED PUSH2 0x2454 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 0x4866 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x484E 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 0x48A5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x488D 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 0x48E1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x48C9 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x490E 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 0x4933 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4947 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 0x495D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x19B0 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 PUSH1 0x60 DUP2 PUSH2 0x49E0 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 0x159B JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x49F8 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0x49E4 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x4A11 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 0x4A3C 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 0x4A8D 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 0x4A6B JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x4A48 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x4AE0 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 0x4B20 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DD6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x4B98 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 0x4C2A 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 PUSH26 0x496E76656E746F72793A2077726F6E67204E46542076616C7565 PUSH1 0x30 SHL 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 0x4C94 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 PUSH24 0x125B9D995B9D1BDC9E4E881B9BDB8B5BDDDB995908139195 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x4D13 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x4CD4 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 0x4CC9 PUSH2 0x2454 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x4D13 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DD6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x3143 JUMPI PUSH2 0x4D63 DUP7 PUSH2 0x4D5C DUP8 PUSH32 0x0 PUSH2 0x384C JUMP JUMPDEST PUSH1 0x1 PUSH2 0x56EE 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 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x4DE4 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 PUSH27 0x496E76656E746F72793A207472616E7366657220746F207A65726F PUSH1 0x28 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4DEE PUSH2 0x2454 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4DFC DUP8 DUP4 PUSH2 0x245E JUMP JUMPDEST SWAP1 POP PUSH2 0x4E0E DUP8 DUP8 DUP8 PUSH1 0x1 DUP6 PUSH1 0x0 PUSH2 0x59EA 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 0x5E16 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DB6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x4E9B DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x47C8 JUMP JUMPDEST ISZERO PUSH2 0x195C JUMPI PUSH2 0x4EA9 DUP7 PUSH2 0x5238 JUMP JUMPDEST ISZERO PUSH2 0x4EC1 JUMPI PUSH2 0x4EBC DUP8 DUP8 DUP8 PUSH1 0x1 DUP9 PUSH2 0x52B9 JUMP JUMPDEST PUSH2 0x195C JUMP JUMPDEST DUP3 ISZERO PUSH2 0x195C JUMPI PUSH2 0x195C DUP8 DUP8 DUP8 DUP8 PUSH2 0x53A2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x4F2C 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 PUSH27 0x496E76656E746F72793A207472616E7366657220746F207A65726F PUSH1 0x28 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 0x4F71 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DF6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4F7B PUSH2 0x2454 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4F89 DUP9 DUP4 PUSH2 0x245E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 JUMPDEST DUP7 DUP2 EQ PUSH2 0x50D8 JUMPI PUSH1 0x0 DUP11 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4FA7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x4FBA DUP2 PUSH2 0x37F0 JUMP JUMPDEST ISZERO PUSH2 0x4FE4 JUMPI PUSH2 0x4FDF DUP14 DUP14 DUP4 DUP14 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x4FD1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP11 PUSH2 0x5891 JUMP JUMPDEST PUSH2 0x50CF JUMP JUMPDEST PUSH2 0x500E DUP2 PUSH32 0x0 PUSH2 0x2409 JUMP JUMPDEST ISZERO PUSH2 0x2738 JUMPI PUSH2 0x5035 DUP14 DUP14 DUP4 DUP14 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x5025 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP11 PUSH1 0x1 PUSH2 0x59EA 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 0x5E16 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x0 PUSH2 0x5090 DUP3 PUSH32 0x0 PUSH2 0x384C JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x50A3 JUMPI DUP1 SWAP6 POP PUSH1 0x1 SWAP5 POP PUSH2 0x50CD JUMP JUMPDEST DUP6 DUP2 EQ PUSH2 0x50C6 JUMPI PUSH2 0x50B6 DUP15 DUP15 DUP9 DUP9 PUSH2 0x5B82 JUMP JUMPDEST SWAP5 POP PUSH1 0x1 SWAP4 SWAP3 SWAP1 SWAP3 ADD SWAP2 DUP5 PUSH2 0x50CD JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SWAP5 POP JUMPDEST POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x4F92 JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x50F8 JUMPI PUSH2 0x50EB DUP12 DUP12 DUP6 DUP6 PUSH2 0x5B82 JUMP JUMPDEST DUP2 ADD PUSH2 0x50F8 DUP12 DUP12 DUP4 PUSH2 0x5BD6 JUMP JUMPDEST DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5114 PUSH2 0x2454 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5D96 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x5172 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x515A 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 0x51B1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5199 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x51D8 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x47C8 JUMP JUMPDEST ISZERO PUSH2 0x3CDC JUMPI PUSH2 0x3CDC DUP12 DUP12 DUP12 DUP12 DUP12 PUSH2 0x47CE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH2 0x19CF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x14185D5CD8589B194E881B9BDD081C185D5CD959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB 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 0x52A6 JUMPI INVALID JUMPDEST DUP3 DUP1 ISZERO PUSH2 0x52B0 JUMPI POP DUP2 JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0xF23A6E61 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0xF23A6E61 PUSH2 0x52D8 PUSH2 0x2454 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 0x5352 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x533A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x537F 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 0x4933 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0xA85BD01 PUSH1 0xE1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH4 0x150B7A02 PUSH2 0x53C1 PUSH2 0x2454 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 0x5434 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x541C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x5461 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 0x5483 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5497 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 0x54AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x1F0F 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 0x551E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x47C8 JUMP JUMPDEST PUSH2 0x556F 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 0x55AC JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x558D 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 0x560E 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 0x5613 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 ISZERO PUSH2 0x5692 JUMPI DUP1 MLOAD ISZERO PUSH2 0x568D JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x563A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x568D 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 0x19B0 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x56E5 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 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 CALLDATASIZE PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ DUP1 PUSH2 0x579A 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 0x57B1 JUMPI PUSH2 0x57A7 PUSH2 0x5CB1 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x588D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ORIGIN EQ DUP1 ISZERO SWAP1 PUSH2 0x5877 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE60125D6 PUSH2 0x57FC PUSH2 0x5CA5 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 0x584A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x585E 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 0x5874 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST ISZERO PUSH2 0x5884 JUMPI PUSH2 0x57A7 PUSH2 0x5CB1 JUMP JUMPDEST PUSH1 0x0 CALLDATASIZE SWAP3 POP SWAP3 POP POP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST DUP1 PUSH2 0x58D1 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DD6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x591B 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 0x5993 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 0x3143 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 0x5A3C 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 PUSH26 0x496E76656E746F72793A2077726F6E67204E46542076616C7565 PUSH1 0x30 SHL 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 0x5AA6 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 PUSH24 0x125B9D995B9D1BDC9E4E881B9BDB8B5BDDDB995908139195 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x5B25 JUMPI PUSH1 0x1 PUSH1 0xA0 SHL DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x5AE6 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 0x5ADB PUSH2 0x2454 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x5B25 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 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5DD6 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE 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 0x195C JUMPI PUSH2 0x5B50 DUP8 DUP8 PUSH1 0x1 PUSH2 0x5BD6 JUMP JUMPDEST PUSH2 0x195C DUP8 DUP8 PUSH2 0x5B7F DUP9 PUSH32 0x0 PUSH2 0x384C JUMP JUMPDEST PUSH1 0x1 JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1F0F 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 0x1983 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 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x5C52 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x6CDB3D13 PUSH1 0xE1 SHL EQ JUMPDEST DUP1 PUSH2 0x5C6D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x3A24D07 PUSH1 0xE2 SHL EQ JUMPDEST DUP1 PUSH2 0x5C88 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x4E72E23 PUSH1 0xE1 SHL EQ JUMPDEST DUP1 PUSH2 0x1598 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 0x5CC4 PUSH1 0x13 NOT DUP4 ADD DUP3 DUP5 DUP2 PUSH2 0x5D6D 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 0x5D02 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x5D48 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x5D1B JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x5D48 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x5D48 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5D48 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x5D2D JUMP JUMPDEST POP PUSH2 0x5D54 SWAP3 SWAP2 POP PUSH2 0x5D58 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x5D54 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5D59 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x5D7C JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x5D88 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP INVALID 0x4A CODECOPY 0xDC MOD 0xD4 0xC0 0xDB 0xC6 0x4B PUSH17 0xAF90FD698A233A518AA5D07E595D983B8C SDIV 0x26 0xC8 0xF7 0xFB 0xC3 0xD5 DUP2 PUSH9 0xC5AE7397731D063D5B 0xBF RETURNDATASIZE PUSH6 0x7854427343F4 0xC0 DUP4 0x24 0xF PUSH27 0xACAA2D0F62496E76656E746F72793A206E6F6E2D617070726F7665 PUSH5 0x2073656E64 PUSH6 0x720000496E76 PUSH6 0x6E746F72793A KECCAK256 PUSH10 0x6E636F6E73697374656E PUSH21 0x206172726179730000DDF252AD1BE2C89B69C2B068 0xFC CALLDATACOPY DUP14 0xAA SWAP6 0x2B 0xA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA5 AND MULMOD DUP11 PUSH1 0x20 DUP13 0xB2 COINBASE DUP2 0xB0 PUSH26 0xCC104A08ABB49542FFF3FD9021D680609A669C3F64736F6C6343 STOP SMOD MOD STOP CALLER ",
              "sourceMap": "941:4734:27:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3377:341:11;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3377:341:11;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2178:212:26;;;;;;;;;;;;;;;;-1:-1:-1;2178:212:26;-1:-1:-1;;;;;;2178:212:26;;:::i;:::-;;;;;;;;;;;;;;;;;;2706:98:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4890:377;;;;;;;;;;;;;;;;-1:-1:-1;4890:377:20;;:::i;:::-;;;;-1:-1:-1;;;;;4890:377:20;;;;;;;;;;;;;;3861:995;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3861:995:20;;;;;;;;:::i;:::-;;5031:263:26;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5031:263:26;;;;;;;;;;;;;;;-1:-1:-1;;;5031:263:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5031:263:26;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5031:263:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5031:263:26;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5031:263:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5031:263:26;;;;;;;;;;-1:-1:-1;5031:263:26;;-1:-1:-1;5031:263:26;-1:-1:-1;5031:263:26;:::i;2565:110::-;;;;;;;;;;;;;;;;-1:-1:-1;2565:110:26;;:::i;4372:190:27:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4372:190:27;;;;;;;;;;;;;:::i;1975:202::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1975:202:27;;;;;;;;;;;;;;;;;:::i;3845:295::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3845:295:27;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3845:295:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3845:295:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3845:295:27;;;;;;;;-1:-1:-1;3845:295:27;;-1:-1:-1;;;;;3845:295:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3845:295:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3845:295:27;;;;;;;;-1:-1:-1;3845:295:27;;-1:-1:-1;;;;;3845:295:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3845:295:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3845:295:27;;-1:-1:-1;3845:295:27;;-1:-1:-1;;;;;3845:295:27:i;1647:104::-;;;:::i;3861:149:26:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3861:149:26;;;;;;;;:::i;2272:210:27:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2272:210:27;;;;;;;;;;;;;;;;;:::i;4117:161:26:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4117:161:26;;;;;;;;;;;;;;;-1:-1:-1;;;4117:161:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4117:161:26;;;;;;;;;;-1:-1:-1;4117:161:26;;-1:-1:-1;4117:161:26;-1:-1:-1;4117:161:26;:::i;3762:435:11:-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3762:435:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3762:435:11;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3762:435:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3762:435:11;;;;;;;;;;-1:-1:-1;3762:435:11;;-1:-1:-1;3762:435:11;-1:-1:-1;3762:435:11;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2855:126:26;;;;;;;;;;;;;;;;-1:-1:-1;2855:126:26;;:::i;544:193:35:-;;;;;;;;;;;;;;;;-1:-1:-1;544:193:35;-1:-1:-1;;;;;544:193:35;;:::i;552:29:10:-;;;:::i;482:18:4:-;;;:::i;4697:227:26:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4697:227:26;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4697:227:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4697:227:26;;;;;;;;;;-1:-1:-1;4697:227:26;;-1:-1:-1;4697:227:26;-1:-1:-1;4697:227:26;:::i;10251:167:20:-;;;;;;;;;;;;;;;;-1:-1:-1;10251:167:20;;:::i;3621:206::-;;;;;;;;;;;;;;;;-1:-1:-1;3621:206:20;-1:-1:-1;;;;;3621:206:20;;:::i;1137:481:7:-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1137:481:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1137:481:7;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1137:481:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1137:481:7;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1137:481:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1137:481:7;;;;;;;;;;-1:-1:-1;1137:481:7;;-1:-1:-1;1137:481:7;-1:-1:-1;1137:481:7;:::i;588:214:10:-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;588:214:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;588:214:10;;;;;;;;;;-1:-1:-1;588:214:10;;-1:-1:-1;588:214:10;-1:-1:-1;588:214:10;:::i;4665:222:27:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4665:222:27;;;;;;;;;;;;;;;-1:-1:-1;;;4665:222:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4665:222:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4665:222:27;;;;;;;;-1:-1:-1;4665:222:27;;-1:-1:-1;;;;;4665:222:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4665:222:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4665:222:27;;-1:-1:-1;4665:222:27;;-1:-1:-1;;;;;4665:222:27:i;1479:100::-;;;:::i;4385:205:26:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4385:205:26;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4385:205:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4385:205:26;;;;;;;;;;-1:-1:-1;4385:205:26;;-1:-1:-1;4385:205:26;-1:-1:-1;4385:205:26;:::i;1114:94:2:-;;;:::i;2846:102:20:-;;;:::i;694:120:1:-;;;;;;;;;;;;;;;;-1:-1:-1;694:120:1;-1:-1:-1;;;;;694:120:1;;:::i;929:185::-;;;:::i;9574:188:20:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9574:188:20;;;;;;;;;;:::i;339:40:1:-;;;;;;;;;;;;;;;;-1:-1:-1;339:40:1;-1:-1:-1;;;;;339:40:1;;:::i;4905:122:11:-;;;;;;;;;;;;;;;;-1:-1:-1;4905:122:11;;:::i;2577:243:27:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2577:243:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2577:243:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2577:243:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2577:243:27;;-1:-1:-1;2577:243:27;;-1:-1:-1;;;;;2577:243:27:i;5788:282:11:-;;;;;;;;;;;;;;;;-1:-1:-1;5788:282:11;;:::i;2430:511:7:-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2430:511:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2430:511:7;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2430:511:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2430:511:7;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2430:511:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2430:511:7;;;;;;;;;;-1:-1:-1;2430:511:7;;-1:-1:-1;2430:511:7;-1:-1:-1;2430:511:7;:::i;6460:94:26:-;;;:::i;5071:254:11:-;;;;;;;;;;;;;;;;-1:-1:-1;5071:254:11;;:::i;2990:218:20:-;;;;;;;;;;;;;;;;-1:-1:-1;2990:218:20;;:::i;3479:146:26:-;;;;;;;;;;;;;;;;-1:-1:-1;3479:146:26;;:::i;5535:286::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5535:286:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5535:286:26;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5535:286:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5535:286:26;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5535:286:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5535:286:26;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5535:286:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5535:286:26;;;;;;;;;;-1:-1:-1;5535:286:26;;-1:-1:-1;5535:286:26;-1:-1:-1;5535:286:26;:::i;9809:264:20:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9809:264:20;;;;;;;;;;:::i;3487:263:27:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3487:263:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3487:263:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3487:263:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3487:263:27;;-1:-1:-1;3487:263:27;;-1:-1:-1;;;;;3487:263:27:i;4990:165::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4990:165:27;;;;;;;;;;;;;;;-1:-1:-1;;;4990:165:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4990:165:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4990:165:27;;-1:-1:-1;4990:165:27;;-1:-1:-1;;;;;4990:165:27:i;1448:197:2:-;;;;;;;;;;;;;;;;-1:-1:-1;1448:197:2;-1:-1:-1;;;;;1448:197:2;;:::i;3044:219:27:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3044:219:27;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3044:219:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3044:219:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3044:219:27;;-1:-1:-1;3044:219:27;;-1:-1:-1;;;;;3044:219:27:i;3377:341:11:-;3461:7;-1:-1:-1;;;;;3488:19:11;;3480:55;;;;;-1:-1:-1;;;3480:55:11;;;;;;;;;;;;-1:-1:-1;;;3480:55:11;;;;;;;;;;;;;;;3550:44;:2;3572:21;3550;:44::i;:::-;3546:128;;;3633:11;;;;:7;:11;;;;;;-1:-1:-1;;;;;3617:38:11;;;;;;:46;;3662:1;3617:46;;;3658:1;3617:46;3610:53;;;;;;3546:128;-1:-1:-1;3691:13:11;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;3691:20:11;;;;;;;;;;3377:341;;;;;:::o;2178:212:26:-;2263:4;-1:-1:-1;;;;;;2286:57:26;;-1:-1:-1;;;2286:57:26;;:97;;;2347:36;2371:11;2347:23;:36::i;:::-;2279:104;;2178:212;;;;:::o;2706:98:20:-;2792:5;2785:12;;;;;;;;-1:-1:-1;;2785:12:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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:20;;5027:77;;;;;-1:-1:-1;;;5027:77:20;;;;;;;;;;;;-1:-1:-1;;;5027:77:20;;;;;;;;;;;;;;;-1:-1:-1;;;5118:34:20;;:39;5114:147;;-1:-1:-1;;5180:22:20;;;;:13;:22;;;;;;-1:-1:-1;;;;;5180:22:20;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:20;;;;;;;;;;;;-1:-1:-1;;;3983:50:20;;;;;;;;;;;;;;;4082:5;-1:-1:-1;;;;;4107:18:20;;;;;;;;4099:55;;;;;-1:-1:-1;;;4099:55:20;;;;;;;;;;;;-1:-1:-1;;;4099:55:20;;;;;;;;;;;;;;;4172:41;4186:12;4200;:10;:12::i;:::-;4172:13;:41::i;:::-;4164:84;;;;;-1:-1:-1;;;4164:84:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4164:84:20;;;;;;;;;;;;;;;-1:-1:-1;;;;;4262:16:20;;4258:542;;-1:-1:-1;;;4298:34:20;;:39;4294:178;;4417:16;;;;:7;:16;;;;;-1:-1:-1;;;;;4436:21:20;;4417:40;;4294:178;4258:542;;;-1:-1:-1;;;4533:34:20;;4585:29;;;4581:168;;4695:16;;;;:7;:16;;;;;:39;;;4581:168;-1:-1:-1;4762:22:20;;;;:13;:22;;;;;:27;;-1:-1:-1;;;;;;4762:27:20;-1:-1:-1;;;;;4762:27:20;;;;;4258:542;4841:7;4837:2;-1:-1:-1;;;;;4814:35:20;4823:12;-1:-1:-1;;;;;4814:35:20;;;;;;;;;;;3861:995;;;;:::o;5031:263:26:-;5212:28;5227:12;:10;:12::i;:::-;5212:14;:28::i;:::-;5250:37;5265:2;5269:3;;5250:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5250:37:26;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5274:6:26;;-1:-1:-1;5274:6:26;;;;5250:37;;;5274:6;;5250:37;5274:6;5250:37;;;;;;;;;-1:-1:-1;;5250:37:26;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5282:4:26;;-1:-1:-1;5282:4:26;;;;5250:37;;5282:4;;;;5250:37;;;;;;;;;-1:-1:-1;5250:14:26;;-1:-1:-1;;;5250:37:26:i;:::-;5031:263;;;;;;;:::o;2565:110::-;2628:13;2660:8;2665:2;2660:4;:8::i;4372:190:27:-;4495:19;:17;:19::i;:::-;4524:31;4539:4;4545:2;4549:5;4524:14;:31::i;:::-;4372:190;;;:::o;1975:202::-;2104:19;:17;:19::i;:::-;2133:37;2152:4;2158:2;2162:7;2133:18;:37::i;3845:295::-;4048:19;:17;:19::i;:::-;4077:56;4105:4;4111:2;4115:3;4120:6;4128:4;4077:27;:56::i;:::-;3845:295;;;;;:::o;1647:104::-;1693:31;1711:12;:10;:12::i;:::-;1693:17;:31::i;:::-;1734:10;:8;:10::i;:::-;1647:104::o;3861:149:26:-;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;2272:210:27:-;2405:19;:17;:19::i;:::-;2434:41;2457:4;2463:2;2467:7;2434:22;:41::i;4117:161:26:-;4211:28;4226:12;:10;:12::i;4211:28::-;4249:22;4260:2;4264:6;;4249:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4249:10:26;;-1:-1:-1;;;4249:22:26:i;3762:435:11:-;3877:16;3913:27;;;3905:70;;;;;-1:-1:-1;;;3905:70:11;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3905:70:11;;;;;;;;;;;;;;;3986:25;4028:6;4014:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4014:28:11;;3986:56;;4058:9;4053:112;4073:18;;;4053:112;;4126:28;4136:6;;4143:1;4136:9;;;;;;;;;;;;;-1:-1:-1;;;;;4136:9:11;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:11;3762:435;-1:-1:-1;;;;;3762:435:11:o;2855:126:26:-;2926:7;2952:22;2961:12;2952:8;:22::i;544:193:35:-;631:4;667:19;-1:-1:-1;;;;;654:32:35;:9;-1:-1:-1;;;;;654:32:35;;:76;;;;711:18;-1:-1:-1;;;;;690:40:35;:9;-1:-1:-1;;;;;690:40:35;;647:83;;544:193;;;:::o;552:29:10:-;;;;;;;;;;;;;;;-1:-1:-1;;552:29:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;482:18:4:-;;;;;;:::o;4697:227:26:-;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:26;;-1:-1:-1;;;4887:30:26:i;10251:167:20:-;10365:7;10391:20;10405:5;10391:13;:20::i;3621:206::-;3700:7;-1:-1:-1;;;;;3727:24:20;;3719:60;;;;;-1:-1:-1;;;3719:60:20;;;;;;;;;;;;-1:-1:-1;;;3719:60:20;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3796:24:20;;;;;:12;:24;;;;;;;3621:206::o;1137:481:7:-;1301:31;1319:12;:10;:12::i;1301:31::-;1359:8;1392:23;;;:51;;;;-1:-1:-1;1419:24:7;;;1392:51;1384:90;;;;;-1:-1:-1;;;1384:90:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;1489:9;1484:128;1509:6;1504:1;:11;1484:128;;1536:65;1577:8;;1586:1;1577:11;;;;;;;;;;;;;-1:-1:-1;;;;;1577:11:7;1590:7;;1598:1;1590:10;;;;;;;;;;;;;1550:6;;1557:1;1550:9;;;;;;;;;;;;;-1:-1:-1;;;;;1550:9:7;-1:-1:-1;;;;;1536:40:7;;;:65;;;;;:::i;:::-;1517:3;;1484:128;;;;1137:481;;;;;;;:::o;588:214:10:-;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:10;;;;;;;;-1:-1:-1;759:36:10;;-1:-1:-1;;;;759:36:10;588:214;;:::o;4665:222:27:-;4813:19;:17;:19::i;:::-;4842:38;4862:4;4868:3;4873:6;4842:19;:38::i;1479:100::-;1523:31;1541:12;:10;:12::i;1523:31::-;1564:8;:6;:8::i;4385:205:26:-;4517:28;4532:12;:10;:12::i;4517:28::-;4555;4561:2;4565:5;4572:4;;4555:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4578:4:26;;-1:-1:-1;4555:5:26;;-1:-1:-1;;4555:28:26:i;:::-;4385:205;;;;:::o;1114:94:2:-;1169:7;1195:6;;;;-1:-1:-1;;;;;1195:6:2;;1114:94::o;2846:102:20:-;2934:7;2927:14;;;;;;;;-1:-1:-1;;2927:14:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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:20:-;9712:43;9736:8;9746;9712:23;:43::i;339:40:1:-;;;;;;;;;;;;;;;:::o;4905:122:11:-;4977:4;5000:20;:2;:18;:20::i;2577:243:27:-;2737:19;:17;:19::i;:::-;2766:47;2789:4;2795:2;2799:7;2808:4;2766:22;:47::i;5788:282:11:-;5861:7;5884:44;:2;5906:21;5884;:44::i;:::-;5880:184;;;5992:1;5967:11;;;:7;:11;;;;;;-1:-1:-1;;;;;5951:43:11;;:51;;6001:1;5951:51;;;5997:1;5951:51;5944:58;;;;;;5880:184;-1:-1:-1;6040:13:11;;;;:9;:13;;;;;;6033:20;;2430:511:7;2599:31;2617:12;:10;:12::i;2599:31::-;2657:8;2690:26;;;:55;;;;-1:-1:-1;2720:25:7;;;2690:55;2682:94;;;;;-1:-1:-1;;;2682:94:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;2791:9;2786:149;2811:6;2806:1;:11;2786:149;;2857:9;;2867:1;2857:12;;;;;;;;;;;;;-1:-1:-1;;;;;2857:12:7;-1:-1:-1;;;;;2838:45:7;;2892:4;2899:8;;2908:1;2899:11;;;;;;;;;;;;;-1:-1:-1;;;;;2899:11:7;2912:8;;2921:1;2912:11;;;;;;;;;;;;;2838:86;;;;;;;;;;;;;-1:-1:-1;;;;;2838:86:7;;;;;;-1:-1:-1;;;;;2838:86:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2819:3;;;;;2786:149;;6460:94:26;6502:16;6537:10;:8;:10::i;:::-;6530:17;;6460:94;:::o;5071:254:11:-;5148:7;5175:47;:5;5200:21;5175:24;:47::i;:::-;5167:81;;;;;-1:-1:-1;;;5167:81:11;;;;;;;;;;;;-1:-1:-1;;;5167:81:11;;;;;;;;;;;;;;;5265:53;:5;5296:21;5265:30;:53::i;2990:218:20:-;3140:1;3112:14;;;:7;:14;;;;;;3063:13;;-1:-1:-1;;;;;3096:46:20;3088:86;;;;;-1:-1:-1;;;3088:86:20;;;;;;;;;;;;-1:-1:-1;;;3088:86:20;;;;;;;;;;;;;;;3191:10;3195:5;3191:3;:10::i;3479:146:26:-;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:20:-;9995:4;10022:44;10045:10;10057:8;10022:22;:44::i;:::-;10015:51;9809:264;-1:-1:-1;;;9809:264:20:o;3487:263:27:-;3665:19;:17;:19::i;:::-;3694:49;3717:4;3723:2;3727;3731:5;3738:4;3694:22;:49::i;4990:165::-;5086:19;:17;:19::i;:::-;5115:33;5135:4;5141:6;5115:19;:33::i;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;3044:219:27:-;3186:19;:17;:19::i;:::-;3215:41;3239:4;3245:2;3249:6;3215:23;:41::i;875:200:12:-;968:4;-1:-1:-1;;;991:12:12;;:17;;;;:77;;;1017:46;1042:20;1017:24;:46::i;:::-;1012:51;;;:56;;;875:200;-1:-1:-1;;875:200:12:o;1156:216:21:-;1241:4;-1:-1:-1;;;;;;1264:61:21;;-1:-1:-1;;;1264:61:21;;:101;;;1329:36;1353:11;1329:23;:36::i;5290:190:27:-;5402:15;5436:37;:35;:37::i;7572:158:11:-;7656:4;7688:6;-1:-1:-1;;;;;7680:14:11;:4;-1:-1:-1;;;;;7680:14:11;;7679:44;;;-1:-1:-1;;;;;;;7699:16:11;;;;;;;: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:20;-1:-1:-1;;;;;17938:16:20;;17930:52;;;;;-1:-1:-1;;;17930:52:20;;;;;;;;;;;;-1:-1:-1;;;17930:52:20;;;;;;;;;;;;;;;18009:10;;18047:13;;18037:23;;18029:66;;;;;-1:-1:-1;;;18029:66:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18029:66:20;;;;;;;;;;;;;;;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:20;;;18550:1;;-1:-1:-1;;;;;;;;;;;18533:28:20;18550:1;;18533:28;18579:24;18606:50;:2;18634:21;18606:27;:50::i;:::-;18579:77;-1:-1:-1;18678:19:20;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:20;-1:-1:-1;;;;;18910:29:20;;;;;;;;;;;;;: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;;;;19347:35;;;-1:-1:-1;;;19347:35:20;;;;;;;;;;;;;;;;;;;;;;;;;;;18413:984;-1:-1:-1;;18229:3:20;;18200:1207;;;-1:-1:-1;19421:19:20;;19417:247;;19456:25;;;;:9;:25;;;;;;;;-1:-1:-1;;;;;19456:29:20;;;;;;;;;;;:50;;;;;;19520:25;;;:9;:25;;;;;:46;;;;;;19624:16;;:12;:16;;;;;:29;;19580:30;;;19624:29;;;;;19417:247;-1:-1:-1;;;;;19679:56:20;;19715:1;19693:12;:10;:12::i;:::-;-1:-1:-1;;;;;19679:56:20;-1:-1:-1;;;;;;;;;;;19723:3:20;19728:6;19679:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19749:15;:2;-1:-1:-1;;;;;19749:13:20;;:15::i;:::-;19745:108;;;19780:62;19816:1;19820:2;19824:3;19829:6;19837:4;19780:27;:62::i;808:159:10:-;865:13;921:15;938:20;:2;:18;:20::i;:::-;904:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;904:55:10;;;;;;;;;;;;;;;;;;;-1:-1:-1;;904:55:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;890:70;;808:159;;;:::o;572:96:4:-;634:6;;;;633:7;625:36;;;;;-1:-1:-1;;;625:36:4;;;;;;;;;;;;-1:-1:-1;;;625:36:4;;;;;;;;;;;;;;1556:624:21;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:21;;;-1:-1:-1;;;;;;;;;;;2000:30:21;2023:1;;2000:30;1873:234;2159:1;-1:-1:-1;;;;;2122:51:21;2145:4;-1:-1:-1;;;;;2122:51:21;2137:6;-1:-1:-1;;;;;2122:51:21;-1:-1:-1;;;;;;;;;;;2163:2:21;2167:5;2122:51;;;;;;;;;;;;;;;;;;;;;;;;1556:624;;;;;:::o;5314:268:20:-;5441:134;5468:4;5486:2;5502:5;5441:134;;;;;;;;;;;;5560:5;5441:13;:134::i;9096:302::-;9340:51;9363:4;9369:2;9373:3;9378:6;9386:4;9340:22;:51::i;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;;;;;;;;;;;;;;;;;;;;;;;;;;;1166:131:4;1213:16;:14;:16::i;:::-;1248:5;1239:14;;-1:-1:-1;;1239:14:4;;;1268:22;1277:12;:10;:12::i;:::-;1268:22;;;-1:-1:-1;;;;;1268:22:4;;;;;;;;;;;;;;1166:131::o;14190:708:20:-;-1:-1:-1;;;;;14327:16:20;;14319:52;;;;;-1:-1:-1;;;14319:52:20;;;;;;;;;;;;-1:-1:-1;;;14319:52:20;;;;;;;;;;;;;;;14389:47;:5;14414:21;14389:24;:47::i;:::-;14381:81;;;;;-1:-1:-1;;;14381:81:20;;;;;;;;;;;;-1:-1:-1;;;14381:81:20;;;;;;;;;;;;;;;14473:29;14482:2;14486:5;14493:1;14496:5;14473:8;:29::i;:::-;14518:31;;14543:5;;-1:-1:-1;;;;;14518:31:20;;;14535:1;;-1:-1:-1;;;;;;;;;;;14518:31:20;14535:1;;14518:31;-1:-1:-1;;;;;14564:54:20;;14601:1;14579:12;:10;:12::i;:::-;-1:-1:-1;;;;;14564:54:20;-1:-1:-1;;;;;;;;;;;14609:5:20;14616:1;14564:54;;;;;;;;;;;;;;;;;;;;;;;;14632:15;:2;-1:-1:-1;;;;;14632:13:20;;: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;5629:271::-;5760:133;5787:4;5805:2;5821:5;5760:133;;;;;;;;;;;;5879:4;5760:13;:133::i;15071:1623::-;-1:-1:-1;;;;;15155:16:20;;15147:52;;;;;-1:-1:-1;;;15147:52:20;;;;;;;;;;;;-1:-1:-1;;;15147:52:20;;;;;;;;;;;;;;;15227:13;;15210:14;15227:13;15276:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15276:21:20;;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:20;;;;;;;;;;;;-1:-1:-1;;;15462:81:20;;;;;;;;;;;;;;;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:20;;;15648:1;;-1:-1:-1;;;;;;;;;;;15631:31:20;15648:1;;15631:31;15676:24;15703:53;:5;15734:21;15703:30;:53::i;:::-;15676:80;-1:-1:-1;15774:19:20;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:20;;;;;;;;;:50;;;;;;16058:25;;;:9;:25;;;;;;:46;;;;;;;;-1:-1:-1;;16143:16:20;15924:363;;;16249:19;;;;;15924:363;-1:-1:-1;;15404:3:20;;15375:936;;;-1:-1:-1;16321:25:20;;;;:9;:25;;;;;;;;-1:-1:-1;;;;;16321:29:20;;;;;;;;;;;:50;;;;;;16381:25;;;:9;:25;;;;;:46;;;;;;16437:16;;;:12;:16;;;;;:26;;;;;;16321:29;16493:12;:10;:12::i;:::-;-1:-1:-1;;;;;16479:59:20;-1:-1:-1;;;;;;;;;;;16523:6:20;16531;16479:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16552:15;:2;-1:-1:-1;;;;;16552:13:20;;: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;:::-;15071:1623;;;;;;:::o;6918:232:11:-;6989:7;7017:54;:12;7049:21;7017:31;:54::i;:::-;7016:55;7008:95;;;;;-1:-1:-1;;;7008:95:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7120:23:11;;;;:9;:23;;;;;;-1:-1:-1;;;;;7120:23:11;;6918:232::o;16857:727:20:-;-1:-1:-1;;;;;17007:16:20;;16999:52;;;;;-1:-1:-1;;;16999:52:20;;;;;;;;;;;;-1:-1:-1;;;16999:52:20;;;;;;;;;;;;;;;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:20;;;17315:1;;-1:-1:-1;;;;;;;;;;;17298:28:20;17315:1;;17298:28;17185:218;17418:49;;;;;;;;;;;;;;-1:-1:-1;;;;;17418:49:20;;;;17449:1;;17418:49;;;;-1:-1:-1;;;;;;;;;;;17418:49:20;;;;;;;;;17481:15;:2;-1:-1:-1;;;;;17481:13:20;;:15::i;:::-;17477:101;;;17512:55;17543:1;17547:2;17551;17555:5;17562:4;17512:22;:55::i;5369:235:11:-;5439:7;5490:14;;;:7;:14;;;;;;-1:-1:-1;;;;;5524:19:11;;5516:59;;;;;-1:-1:-1;;;5516:59:11;;;;;;;;;;;;-1:-1:-1;;;5516:59:11;;;;;;;;;;;;;;416:223:6;573:58;;;-1:-1:-1;;;;;573:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;573:58:6;-1:-1:-1;;;573:58:6;;;538:94;;566:5;;538:27;:94::i;2235:1961:21:-;2400:10;;2438:13;;2428:23;;2420:66;;;;;-1:-1:-1;;;2420:66:21;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2420:66:21;;;;;;;;;;;;;;;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:21;;;-1:-1:-1;;;;;;;;;;;3016:30:21;3039:1;;3016:30;3064:24;3091:50;:2;3119:21;3091:27;:50::i;:::-;3064:77;-1:-1:-1;3163:19:21;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:21;;3545:30;;;;;3503:16;3329:390;;;3677:19;;;;;3329:390;2878:947;;-1:-1:-1;2715:3:21;;2686:1149;;;-1:-1:-1;3849:19:21;;3845:277;;3884:65;3909:4;3915:14;3931:17;3884:24;:65::i;:::-;-1:-1:-1;;;;;4080:18:21;;;;;;:12;:18;;;;;:31;;3963:30;;;4080:31;;;;;;3845:277;4173:1;-1:-1:-1;;;;;4137:52:21;4159:4;-1:-1:-1;;;;;4137:52:21;4151:6;-1:-1:-1;;;;;4137:52:21;-1:-1:-1;;;;;;;;;;;4177:3:21;4182:6;4137:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2235:1961;;;;;;;;;:::o;905:129:4:-;950:19;:17;:19::i;:::-;979:6;:13;;-1:-1:-1;;979:13:4;988:4;979:13;;;1007:20;1014:12;:10;:12::i;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:11:-;4326:14;4343:12;:10;:12::i;:::-;4326:29;;4385:6;-1:-1:-1;;;;;4373:18:11;:8;-1:-1:-1;;;;;4373:18:11;;;4365:55;;;;;-1:-1:-1;;;4365:55:11;;;;;;;;;;;;-1:-1:-1;;;4365:55:11;;;;;;;;;;;;;;;-1:-1:-1;;;;;4430:18:11;;;;;;;:10;:18;;;;;;;;:28;;;;;;;;;;;;;:39;;-1:-1:-1;;4430:39:11;;;;;;;;;;4484:42;;;;;;;;;;;;;;;;;4232:301;;;:::o;762:107:12:-;-1:-1:-1;;;845:12:12;:17;;762:107::o;5947:300:20:-;6105:135;6132:4;6150:2;6166:5;6185:4;6226;6105:13;:135::i;5486:187:27:-;5596:16;5631:35;:33;:35::i;:::-;5624:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5624:42:27;;-1:-1:-1;;;;5486:187:27;:::o;1081:190:12:-;1183:7;1218:46;1243:20;1218:24;:46::i;:::-;1217:47;1209:5;:55;1202:62;;1081:190;;;;:::o;6518:394:11:-;6603:54;:12;6635:21;6603:31;:54::i;:::-;6602:55;6594:95;;;;;-1:-1:-1;;;6594:95:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;6742:1;6707:23;;;:9;:23;;;;;;-1:-1:-1;;;;;6707:23:11;:37;6699:80;;;;;-1:-1:-1;;;6699:80:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;6815:12;:10;:12::i;:::-;6789:23;;;;:9;:23;;;;;:38;;-1:-1:-1;;;;;;6789:38:11;-1:-1:-1;;;;;6789:38:11;;;;;;;;;;6874:30;6789:23;6874:28;:30::i;:::-;6842:63;;6860:12;6842:63;;;;;;;;;;6518:394;:::o;20029:1526:20:-;20228:10;20263:20;;;:47;;;;-1:-1:-1;20287:23:20;;;20263:47;20255:90;;;;;-1:-1:-1;;;20255:90:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;20255:90:20;;;;;;;;;;;;;;;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:20;20443:26;;20505:1;-1:-1:-1;;;;;20491:16:20;:2;-1:-1:-1;;;;;20491:16:20;;;20483:52;;;;;-1:-1:-1;;;20483:52:20;;;;;;;;;;;;-1:-1:-1;;;20483:52:20;;;;;;;;;;;;;;;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:20;;;;20747:1;;20716:49;;;;-1:-1:-1;;;;;;;;;;;20716:49:20;;;;;;;;;20787:15;:2;-1:-1:-1;;;;;20787:13:20;;:15::i;:::-;20783:117;;;20826:55;20857:1;20861:2;20865;20869:5;20876:4;;20826:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20826:22:20;;-1:-1:-1;;;20826:55:20: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:20;;;21058:1;;-1:-1:-1;;;;;;;;;;;21041:28:20;21058:1;;21041:28;21092:45;;;;;;21135:1;21092:45;;;;;;-1:-1:-1;;;;;21092:45:20;;;;21123:1;;21092:45;;;;-1:-1:-1;;;;;;;;;;;21092:45:20;;;;;;;;;21159:15;:2;-1:-1:-1;;;;;21159:13:20;;: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:20;;-1:-1:-1;;;21257:51:20:i;:::-;21198:235;;;21363:47;21393:1;21397:2;21401;21405:4;;21363:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21363:21:20;;-1:-1:-1;;;21363:47:20:i;20920:619::-;20395:1154;;;20424:3;;;;;20395:1154;;;;20029:1526;;;;;;;;;;:::o;4568:164:11:-;-1:-1:-1;;;;;4693:22:11;;;4670:4;4693:22;;;:10;:22;;;;;;;;:32;;;;;;;;;;;;;;;4568:164::o;8159:890:20:-;8378:14;8395:12;:10;:12::i;:::-;8378:29;-1:-1:-1;;;;;;8425:16:20;;8417:56;;;;;-1:-1:-1;;;8417:56:20;;;;;;;;;;;;-1:-1:-1;;;8417:56:20;;;;;;;;;;;;;;;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:20;8790:4;-1:-1:-1;;;;;8781:22:20;-1:-1:-1;;;;;;;;;;;8781:22:20;;;;;;;;;8646:234;8924:2;-1:-1:-1;;;;;8895:43:20;8918:4;-1:-1:-1;;;;;8895:43:20;8910:6;-1:-1:-1;;;;;8895:43:20;-1:-1:-1;;;;;;;;;;;8928:2:20;8932:5;8895:43;;;;;;;;;;;;;;;;;;;;;;;;8952:15;:2;-1:-1:-1;;;;;8952:13:20;;:15::i;:::-;8948:95;;;8983:49;9006:4;9012:2;9016;9020:5;9027:4;8983:22;:49::i;4251:1412:21:-;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:21;4459:13;4508:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4508:21:21;;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:21;;;-1:-1:-1;;;;;;;;;;;4790:33:21;4813:1;;4790:33;4837:24;4864:53;:5;4895:21;4864:30;:53::i;:::-;4837:80;-1:-1:-1;4935:19:21;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:21;;4607:812;;;-1:-1:-1;5433:19:21;;5429:157;;5468:65;5493:4;5499:14;5515:17;5468:24;:65::i;:::-;-1:-1:-1;;;;;5547:18:21;;;;;;:12;:18;;;;;:28;;;;;;;5429:157;5637:1;-1:-1:-1;;;;;5601:55:21;5623:4;-1:-1:-1;;;;;5601:55:21;5615:6;-1:-1:-1;;;;;5601:55:21;-1:-1:-1;;;;;;;;;;;5641:6:21;5649;5601:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4251:1412;;;;;;;;:::o;6294:1689:20:-;-1:-1:-1;;;;;6444:16:20;;6436:56;;;;;-1:-1:-1;;;6436:56:20;;;;;;;;;;;;-1:-1:-1;;;6436:56:20;;;;;;;;;;;;;;;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:20;6614:13;6663:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6663:21:20;;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:20;6954:4;-1:-1:-1;;;;;6945:25:20;-1:-1:-1;;;;;;;;;;;6945:25:20;;;;;;;;;6984:24;7011:53;:5;7042:21;7011:30;:53::i;:::-;6984:80;-1:-1:-1;7082:19:20;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:20;;6762:812;;;-1:-1:-1;7588:19:20;;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:20;7808:4;-1:-1:-1;;;;;7780:53:20;7794:12;:10;:12::i;:::-;-1:-1:-1;;;;;7780:53:20;-1:-1:-1;;;;;;;;;;;7818:6:20;7826;7780:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7847:15;:2;-1:-1:-1;;;;;7847:13:20;;: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;1277:158:12:-;1427:1;1396:3;:26;;;;1390:33;-1:-1:-1;;1389:39:12;;1277:158::o;2183:352:20:-;2268:4;-1:-1:-1;;;;;;2303:40:20;;-1:-1:-1;;;2303:40:20;;:104;;-1:-1:-1;;;;;;;2359:48:20;;-1:-1:-1;;;2359:48:20;2303:104;:173;;;-1:-1:-1;;;;;;;2423:53:20;;-1:-1:-1;;;2423:53:20;2303:173;:225;;;;2492:36;2516:11;2492:23;:36::i;743:904:35:-;796:15;851:10;796:15;896:27;:25;:27::i;:::-;871:52;;958:18;-1:-1:-1;;;;;937:40:35;:9;-1:-1:-1;;;;;937:40:35;;:76;;;;994:19;-1:-1:-1;;;;;981:32:35;:9;-1:-1:-1;;;;;981:32:35;;937:76;933:166;;;1082:6;-1:-1:-1;1075:13:35;;-1:-1:-1;1075:13:35;933:166;-1:-1:-1;;;;;1496:22:35;;1509:9;1496:22;;;;:78;;;1522:18;-1:-1:-1;;;;;1522:33:35;;1556:6;1564:9;1522:52;;;;;;;;;;;;;-1:-1:-1;;;;;1522:52:35;;;;;;-1:-1:-1;;;;;1522:52:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1522:52:35;1496:78;1492:122;;;1597:6;-1:-1:-1;1590:13:35;;-1:-1:-1;1590:13:35;1492:122;-1:-1:-1;1631:9:35;-1:-1:-1;743:904:35;:::o;21690:437:20:-;21809:10;21801:44;;;;;-1:-1:-1;;;21801:44:20;;;;;;;;;;;;-1:-1:-1;;;21801:44:20;;;;;;;;;;;;;;;21855:14;21872:13;;;:9;:13;;;;;;21915:14;;;21947:18;;;21939:57;;;;;-1:-1:-1;;;21939:57:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;22006:13;;;;:9;:13;;;;;;;;:25;;;;22094:9;:13;;;;;-1:-1:-1;;;;;22094:17:20;;;;;;;;;-1:-1:-1;22094:17:20;;;:26;;;;;;;21690:437::o;22133:683::-;22269:5;22278:1;22269:10;22261:49;;;;;-1:-1:-1;;;22261:49:20;;;;;;;;;;;;-1:-1:-1;;;22261:49:20;;;;;;;;;;;;;;;22328:11;;;;:7;:11;;;;;;:16;22320:58;;;;;-1:-1:-1;;;22320:58:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;22389:11;;;;:7;:11;;;;;-1:-1:-1;;;;;22403:20:20;;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:20;;;;;;;;;22738:29;;;;;;22783:12;:16;;;;;;22781:18;;;;;;;-1:-1:-1;22133:683:20;;;;:::o;913:377:8:-;1229:20;1275:8;;;913:377::o;9002:389:11:-;-1:-1:-1;;;;;;;;9217:48:11;;1721:10;9266:12;:10;:12::i;:::-;9280:4;9286:3;9291:6;9299:4;9217:87;;;;;;;;;;;;;-1:-1:-1;;;;;9217:87:11;;;;;;-1:-1:-1;;;;;9217:87:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9217:87:11;-1:-1:-1;;;;;;9217:114:11;;9196:188;;;;;-1:-1:-1;;;9196:188:11;;;;;;;;;;;;;;;;;;;;;;;;;;;276:546:9;339:13;368:10;364:51;;-1:-1:-1;394:10:9;;;;;;;;;;;;-1:-1:-1;;;394:10:9;;;;;;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:9;-1:-1:-1;654:5:9;;-1:-1:-1;562:39:9;-1:-1:-1;;;627:10:9;;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;;;;;701:49:9;;;;;;;;-1:-1:-1;772:2:9;764:10;;;;669:116;;;-1:-1:-1;808:6:9;276:546;-1:-1:-1;;;;276:546:9:o;5798:474:21:-;5944:10;5936:44;;;;;-1:-1:-1;;;5936:44:21;;;;;;;;;;;;-1:-1:-1;;;5936:44:21;;;;;;;;;;;;;;;5998:10;5990:53;;;;;-1:-1:-1;;;5990:53:21;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5990:53:21;;;;;;;;;;;;;;;6053:15;6071:13;;;:9;:13;;;;;;;;-1:-1:-1;;;;;6071:19:21;;;;;;;;;;6108:16;;;;6100:58;;;;;-1:-1:-1;;;6100:58:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;6168:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;6168:19:21;;;;;;;;;;;6190:15;;;;6168:37;;;6243:13;;;:9;:13;;-1:-1:-1;6243:13:21;;;:22;;;;;;;;5798:474::o;6278:792::-;6449:5;6458:1;6449:10;6441:49;;;;;-1:-1:-1;;;6441:49:21;;;;;;;;;;;;-1:-1:-1;;;6441:49:21;;;;;;;;;;;;;;;6500:13;6516:11;;;:7;:11;;;;;;-1:-1:-1;;;;;6545:31:21;;;;;;;6537:68;;;;;-1:-1:-1;;;6537:68:21;;;;;;;;;;;;-1:-1:-1;;;6537:68:21;;;;;;;;;;;;;;;6620:10;6615:163;;-1:-1:-1;;;6655:34:21;;:39;;;;6654:78;;-1:-1:-1;6715:17:21;;;;:13;:17;;;;;;-1:-1:-1;;;;;6715:17:21;6699:12;:10;:12::i;:::-;-1:-1:-1;;;;;6699:33:21;;6654:78;6646:121;;;;;-1:-1:-1;;;6646:121:21;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6646:121:21;;;;;;;;;;;;;;;6787:11;;;;:7;:11;;;;;-1:-1:-1;;;6787:30:21;;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:21;;;;;;:12;:18;;;;;7033:20;;-1:-1:-1;;7033:20:21;;;6278:792;;;;;;:::o;10847:737:20:-;-1:-1:-1;;;;;11014:16:20;;11006:56;;;;;-1:-1:-1;;;11006:56:20;;;;;;;;;;;;-1:-1:-1;;;11006:56:20;;;;;;;;;;;;;;;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:20;11243:4;-1:-1:-1;;;;;11234:25:20;-1:-1:-1;;;;;;;;;;;11234:25:20;;;;;;;;;11303:2;-1:-1:-1;;;;;11274:42:20;11297:4;-1:-1:-1;;;;;11274:42:20;11289:6;-1:-1:-1;;;;;11274:42:20;-1:-1:-1;;;;;;;;;;;11307:5:20;11314:1;11274:42;;;;;;;;;;;;;;;;;;;;;;;;11330:15;:2;-1:-1:-1;;;;;11330:13:20;;: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:20;;11964:56;;;;;-1:-1:-1;;;11964:56:20;;;;;;;;;;;;-1:-1:-1;;;11964:56:20;;;;;;;;;;;;;;;12047:10;;12085:13;;12075:23;;12067:66;;;;;-1:-1:-1;;;12067:66:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;12067:66:20;;;;;;;;;;;;;;;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:20;12687:4;-1:-1:-1;;;;;12678:22:20;-1:-1:-1;;;;;;;;;;;12678:22:20;;;;;;;;;12718:24;12745:50;:2;12773:21;12745:27;:50::i;:::-;12718:77;-1:-1:-1;12817:19:20;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:20;;13207:30;;;;;13165:16;12983:398;;;13339:19;;;;;12983:398;12532:955;;-1:-1:-1;12361:3:20;;12332:1165;;;-1:-1:-1;13511:19:20;;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:20;13778:4;-1:-1:-1;;;;;13750:50:20;13764:12;:10;:12::i;:::-;-1:-1:-1;;;;;13750:50:20;-1:-1:-1;;;;;;;;;;;13788:3:20;13793:6;13750:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13814:15;:2;-1:-1:-1;;;;;13814:13:20;;:15::i;:::-;13810:102;;;13845:56;13873:4;13879:2;13883:3;13888:6;13896:4;13845:27;:56::i;674:96:4:-;732:6;;;;724:39;;;;;-1:-1:-1;;;724:39:4;;;;;;;;;;;;-1:-1:-1;;;724:39:4;;;;;;;;;;;;;;25210:871:20;25374:90;;;-1:-1:-1;;;25374:90:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25374:90:20;-1:-1:-1;;;25374:90:20;;;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:20:o;8201:317:11:-;-1:-1:-1;;;;;;;;8378:43:11;;1559:10;8422:12;:10;:12::i;:::-;8436:4;8442:2;8446:5;8453:4;8378:80;;;;;;;;;;;;;-1:-1:-1;;;;;8378:80:11;;;;;;-1:-1:-1;;;;;8378:80:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26499:335:20;-1:-1:-1;;;;;;;;26668:36:20;;;26705:12;:10;:12::i;:::-;26719:4;26725:5;26732:4;26668:69;;;;;;;;;;;;;-1:-1:-1;;;;;26668:69:20;;;;;;-1:-1:-1;;;;;26668:69:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26668:69:20;-1:-1:-1;;;;;;26668:106:20;;26647:180;;;;;-1:-1:-1;;;26647:180:20;;;;;;;;;;;;;;;;;;;;;;;;;;;1147:870:6;1272:5;1296:19;-1:-1:-1;;;;;1296:17:6;;;:19::i;:::-;1288:58;;;;;-1:-1:-1;;;1288:58:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1417:12;1431:17;1452:6;-1:-1:-1;;;;;1452:11:6;1464:8;1452:21;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1452:21:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1416:57;;;;1487:7;1483:528;;;1514:11;;:16;1510:122;;1569:4;1558:24;;;;;;;;;;;;;;;-1:-1:-1;1558:24:6;1550:67;;;;;-1:-1:-1;;;1550:67:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1483:528;;;1720:11;;1716:95;;1756:40;;;-1:-1:-1;;;1756:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;1716:95;1938:4;1932:11;1982:4;1975;1971:2;1967:13;1960:27;7076:305:21;7292:23;;;;:9;:23;;;;;;;;-1:-1:-1;;;;;7292:29:21;;;;;;;;;;;:39;;;;;;;7341:23;;;:9;:23;;;;;;:33;;;;;;;;7076:305::o;1653:670:35:-;1704:14;;1758:10;-1:-1:-1;;;;;1803:18:35;1782:40;;;;:76;;;1839:19;-1:-1:-1;;;;;1826:32:35;:9;-1:-1:-1;;;;;1826:32:35;;1782:76;1778:197;;;1927:37;:35;:37::i;:::-;1920:44;;;;;;;1778:197;-1:-1:-1;;;;;2122:22:35;;2135:9;2122:22;;;;:99;;;2148:18;-1:-1:-1;;;;;2148:33:35;;2182:27;:25;:27::i;:::-;2211:9;2148:73;;;;;;;;;;;;;-1:-1:-1;;;;;2148:73:35;;;;;;-1:-1:-1;;;;;2148:73:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2148:73:35;2122:99;2118:174;;;2244:37;:35;:37::i;2118:174::-;2308:8;;2301:15;;;;;1653:670;;;:::o;22822:575:20:-;22992:10;22984:53;;;;;-1:-1:-1;;;22984:53:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22984:53:20;;;;;;;;;;;;;;;23055:10;23047:44;;;;;-1:-1:-1;;;23047:44:20;;;;;;;;;;;;-1:-1:-1;;;23047:44:20;;;;;;;;;;;;;;;23101:15;23119:13;;;:9;:13;;;;;;;;-1:-1:-1;;;;;23119:19:20;;;;;;;;;;23156:16;;;;23148:58;;;;;-1:-1:-1;;;23148:58:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;23228:2;-1:-1:-1;;;;;23220:10:20;:4;-1:-1:-1;;;;;23220:10:20;;23216:175;;23246:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;23246:19:20;;;;;;;;;;;23268:15;;;;23246:37;;;23354:17;;;;;;;;;:26;;;;;;;-1:-1:-1;22822:575:20:o;23403:768::-;23598:5;23607:1;23598:10;23590:49;;;;;-1:-1:-1;;;23590:49:20;;;;;;;;;;;;-1:-1:-1;;;23590:49:20;;;;;;;;;;;;;;;23649:13;23665:11;;;:7;:11;;;;;;-1:-1:-1;;;;;23694:31:20;;;;;;;23686:68;;;;;-1:-1:-1;;;23686:68:20;;;;;;;;;;;;-1:-1:-1;;;23686:68:20;;;;;;;;;;;;;;;23769:10;23764:163;;-1:-1:-1;;;23804:34:20;;:39;;;;23803:78;;-1:-1:-1;23864:17:20;;;;:13;:17;;;;;;-1:-1:-1;;;;;23864:17:20;23848:12;:10;:12::i;:::-;-1:-1:-1;;;;;23848:33:20;;23803:78;23795:121;;;;;-1:-1:-1;;;23795:121:20;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23795:121:20;;;;;;;;;;;;;;;23936:11;;;;:7;:11;;;;;-1:-1:-1;;;;;23950:20:20;;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;24564:434;24743:2;-1:-1:-1;;;;;24735:10:20;:4;-1:-1:-1;;;;;24735:10:20;;24731:261;;24834:23;;;;:9;:23;;;;;;;;-1:-1:-1;;;;;24834:29:20;;;;;;;;;;;:39;;;;;;;24944:27;;;;;;;:37;;;;;;;24564:434::o;24177:381::-;24324:2;-1:-1:-1;;;;;24316:10:20;:4;-1:-1:-1;;;;;24316:10:20;;24312:240;;-1:-1:-1;;;;;24415:18:20;;;;;;;:12;:18;;;;;;:28;;;;;;;24515:16;;;;;;:26;;;;;;24177:381;;;:::o;2760:444:11:-;2845:4;-1:-1:-1;;;;;;2880:40:11;;-1:-1:-1;;;2880:40:11;;:97;;-1:-1:-1;;;;;;;2936:41:11;;-1:-1:-1;;;2936:41:11;2880:97;:165;;;-1:-1:-1;;;;;;;2993:52:11;;-1:-1:-1;;;2993:52:11;2880:165;:240;;;-1:-1:-1;;;;;;;3061:59:11;;-1:-1:-1;;;3061:59:11;2880:240;:317;;;-1:-1:-1;;;;;;;;3136:61:11;-1:-1:-1;;;3136:61:11;;2760:444::o;103:519:34:-;-1:-1:-1;;585:14:34;581:23;568:37;564:2;560:46;;536:80::o;628:149::-;706:14;;739:31;-1:-1:-1;;749:20:34;;706:14;;;739:31;:::i;:::-;732:38;;;;628:149;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:363:36;;;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:36;;;346:25;;;;;-1:-1:-1;144:233:36: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",
              "pause()": "8456cb59",
              "paused()": "5c975abb",
              "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",
              "unpause()": "3f4ba83a",
              "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,
                322
              ],
              "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,
                322
              ],
              "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": 312,
                                "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": 312,
                            "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": [
              322
            ],
            "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": 323,
              "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": 322,
                    "src": "693:15:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                      "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,
                322
              ],
              "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,
                322
              ],
              "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": 312,
                                "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/lifecycle/Pausable.sol": {
        "ast": {
          "absolutePath": "@animoca/ethereum-contracts-core/contracts/lifecycle/Pausable.sol",
          "exportedSymbols": {
            "ManagedIdentity": [
              322
            ],
            "Pausable": [
              301
            ]
          },
          "id": 302,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 220,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:4"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "../metatx/ManagedIdentity.sol",
              "id": 222,
              "nodeType": "ImportDirective",
              "scope": 302,
              "sourceUnit": 323,
              "src": "66:62:4",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 221,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:15:4",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 224,
                    "name": "ManagedIdentity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 322,
                    "src": "233:15:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                      "typeString": "contract ManagedIdentity"
                    }
                  },
                  "id": 225,
                  "nodeType": "InheritanceSpecifier",
                  "src": "233:15:4"
                }
              ],
              "contractDependencies": [
                322
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 223,
                "nodeType": "StructuredDocumentation",
                "src": "130:72:4",
                "text": " @dev Contract which allows children to implement pausability."
              },
              "fullyImplemented": true,
              "id": 301,
              "linearizedBaseContracts": [
                301,
                322
              ],
              "name": "Pausable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 226,
                    "nodeType": "StructuredDocumentation",
                    "src": "255:73:4",
                    "text": " @dev Emitted when the pause is triggered by `account`."
                  },
                  "id": 230,
                  "name": "Paused",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 229,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 228,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 230,
                        "src": "346:15:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 227,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "346:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "345:17:4"
                  },
                  "src": "333:30:4"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 231,
                    "nodeType": "StructuredDocumentation",
                    "src": "369:70:4",
                    "text": " @dev Emitted when the pause is lifted by `account`."
                  },
                  "id": 235,
                  "name": "Unpaused",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 234,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 233,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 235,
                        "src": "459:15:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 232,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "459:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "458:17:4"
                  },
                  "src": "444:32:4"
                },
                {
                  "constant": false,
                  "functionSelector": "5c975abb",
                  "id": 237,
                  "mutability": "mutable",
                  "name": "paused",
                  "nodeType": "VariableDeclaration",
                  "scope": 301,
                  "src": "482:18:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 236,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "482:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 246,
                    "nodeType": "Block",
                    "src": "533:33:4",
                    "statements": [
                      {
                        "expression": {
                          "id": 244,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 242,
                            "name": "paused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 237,
                            "src": "543:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 243,
                            "name": "paused_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 239,
                            "src": "552:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "543:16:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 245,
                        "nodeType": "ExpressionStatement",
                        "src": "543:16:4"
                      }
                    ]
                  },
                  "id": 247,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 240,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 239,
                        "mutability": "mutable",
                        "name": "paused_",
                        "nodeType": "VariableDeclaration",
                        "scope": 247,
                        "src": "519:12:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 238,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "519:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "518:14:4"
                  },
                  "returnParameters": {
                    "id": 241,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "533:0:4"
                  },
                  "scope": 301,
                  "src": "507:59:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 256,
                    "nodeType": "Block",
                    "src": "615:53:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 252,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "633:7:4",
                              "subExpression": {
                                "id": 251,
                                "name": "paused",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 237,
                                "src": "634:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5061757361626c653a20706175736564",
                              "id": 253,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "642:18:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a",
                                "typeString": "literal_string \"Pausable: paused\""
                              },
                              "value": "Pausable: paused"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a",
                                "typeString": "literal_string \"Pausable: paused\""
                              }
                            ],
                            "id": 250,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "625:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 254,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "625:36:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 255,
                        "nodeType": "ExpressionStatement",
                        "src": "625:36:4"
                      }
                    ]
                  },
                  "id": 257,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_requireNotPaused",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 248,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "598:2:4"
                  },
                  "returnParameters": {
                    "id": 249,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "615:0:4"
                  },
                  "scope": 301,
                  "src": "572:96:4",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 265,
                    "nodeType": "Block",
                    "src": "714:56:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 261,
                              "name": "paused",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 237,
                              "src": "732:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5061757361626c653a206e6f7420706175736564",
                              "id": 262,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "740:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a",
                                "typeString": "literal_string \"Pausable: not paused\""
                              },
                              "value": "Pausable: not paused"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a",
                                "typeString": "literal_string \"Pausable: not paused\""
                              }
                            ],
                            "id": 260,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "724:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 263,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "724:39:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 264,
                        "nodeType": "ExpressionStatement",
                        "src": "724:39:4"
                      }
                    ]
                  },
                  "id": 266,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_requirePaused",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 258,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "697:2:4"
                  },
                  "returnParameters": {
                    "id": 259,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "714:0:4"
                  },
                  "scope": 301,
                  "src": "674:96:4",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 282,
                    "nodeType": "Block",
                    "src": "940:94:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 270,
                            "name": "_requireNotPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 257,
                            "src": "950:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "950:19:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 272,
                        "nodeType": "ExpressionStatement",
                        "src": "950:19:4"
                      },
                      {
                        "expression": {
                          "id": 275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 273,
                            "name": "paused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 237,
                            "src": "979:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 274,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "988:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "979:13:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 276,
                        "nodeType": "ExpressionStatement",
                        "src": "979:13:4"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 278,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "1014:10:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 279,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1014:12:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 277,
                            "name": "Paused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 230,
                            "src": "1007:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1007:20:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 281,
                        "nodeType": "EmitStatement",
                        "src": "1002:25:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 267,
                    "nodeType": "StructuredDocumentation",
                    "src": "776:124:4",
                    "text": " @dev Triggers stopped state.\n Requirements:\n - The contract must not be paused."
                  },
                  "id": 283,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_pause",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 268,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "920:2:4"
                  },
                  "returnParameters": {
                    "id": 269,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "940:0:4"
                  },
                  "scope": 301,
                  "src": "905:129:4",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 299,
                    "nodeType": "Block",
                    "src": "1203:94:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 287,
                            "name": "_requirePaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 266,
                            "src": "1213:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 288,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1213:16:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 289,
                        "nodeType": "ExpressionStatement",
                        "src": "1213:16:4"
                      },
                      {
                        "expression": {
                          "id": 292,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 290,
                            "name": "paused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 237,
                            "src": "1239:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "66616c7365",
                            "id": 291,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1248:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "1239:14:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 293,
                        "nodeType": "ExpressionStatement",
                        "src": "1239:14:4"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 295,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "1277:10:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 296,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1277:12:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 294,
                            "name": "Unpaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 235,
                            "src": "1268:8:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 297,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1268:22:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 298,
                        "nodeType": "EmitStatement",
                        "src": "1263:27:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 284,
                    "nodeType": "StructuredDocumentation",
                    "src": "1040:121:4",
                    "text": " @dev Returns to normal state.\n Requirements:\n - The contract must be paused."
                  },
                  "id": 300,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_unpause",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 285,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1183:2:4"
                  },
                  "returnParameters": {
                    "id": 286,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1203:0:4"
                  },
                  "scope": 301,
                  "src": "1166:131:4",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 302,
              "src": "203:1096:4"
            }
          ],
          "src": "33:1267:4"
        },
        "id": 4
      },
      "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol": {
        "ast": {
          "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
          "exportedSymbols": {
            "ManagedIdentity": [
              322
            ]
          },
          "id": 323,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 303,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:5"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 322,
              "linearizedBaseContracts": [
                322
              ],
              "name": "ManagedIdentity",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 311,
                    "nodeType": "Block",
                    "src": "425:34:5",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "id": 308,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "442:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 309,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "442:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 307,
                        "id": 310,
                        "nodeType": "Return",
                        "src": "435:17:5"
                      }
                    ]
                  },
                  "id": 312,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 304,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "374:2:5"
                  },
                  "returnParameters": {
                    "id": 307,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 306,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 312,
                        "src": "408:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 305,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "408:15:5",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "407:17:5"
                  },
                  "scope": 322,
                  "src": "355:104:5",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 320,
                    "nodeType": "Block",
                    "src": "530:32:5",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "id": 317,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "547:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 318,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "src": "547:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 316,
                        "id": 319,
                        "nodeType": "Return",
                        "src": "540:15:5"
                      }
                    ]
                  },
                  "id": 321,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 313,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "482:2:5"
                  },
                  "returnParameters": {
                    "id": 316,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 315,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 321,
                        "src": "516:12:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 314,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "516:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "515:14:5"
                  },
                  "scope": 322,
                  "src": "465:97:5",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 323,
              "src": "315:249:5"
            }
          ],
          "src": "33:532:5"
        },
        "id": 5
      },
      "@animoca/ethereum-contracts-core/contracts/utils/ERC20Wrapper.sol": {
        "ast": {
          "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/ERC20Wrapper.sol",
          "exportedSymbols": {
            "AddressIsContract": [
              672
            ],
            "ERC20Wrapper": [
              463
            ],
            "IWrappedERC20": [
              493
            ]
          },
          "id": 494,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 324,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:6"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol",
              "file": "./types/AddressIsContract.sol",
              "id": 326,
              "nodeType": "ImportDirective",
              "scope": 494,
              "sourceUnit": 673,
              "src": "66:64:6",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 325,
                    "name": "AddressIsContract",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:17:6",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 327,
                "nodeType": "StructuredDocumentation",
                "src": "132:214:6",
                "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": 463,
              "linearizedBaseContracts": [
                463
              ],
              "name": "ERC20Wrapper",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 330,
                  "libraryName": {
                    "id": 328,
                    "name": "AddressIsContract",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 672,
                    "src": "380:17:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AddressIsContract_$672",
                      "typeString": "library AddressIsContract"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "374:36:6",
                  "typeName": {
                    "id": 329,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "402:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                {
                  "body": {
                    "id": 351,
                    "nodeType": "Block",
                    "src": "528:111:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 340,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 332,
                              "src": "566:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                "typeString": "contract IWrappedERC20"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 343,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 332,
                                      "src": "596:5:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                        "typeString": "contract IWrappedERC20"
                                      }
                                    },
                                    "id": 344,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "transfer",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 472,
                                    "src": "596:14:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 345,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "596:23:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "id": 346,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 334,
                                  "src": "621:2:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 347,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 336,
                                  "src": "625:5:6",
                                  "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": 341,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "573:3:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 342,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "573:22:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 348,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "573:58:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                "typeString": "contract IWrappedERC20"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 339,
                            "name": "_callWithOptionalReturnData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 462,
                            "src": "538:27:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IWrappedERC20_$493_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (contract IWrappedERC20,bytes memory)"
                            }
                          },
                          "id": 349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "538:94:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 350,
                        "nodeType": "ExpressionStatement",
                        "src": "538:94:6"
                      }
                    ]
                  },
                  "id": 352,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "wrappedTransfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 337,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 332,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 352,
                        "src": "450:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                          "typeString": "contract IWrappedERC20"
                        },
                        "typeName": {
                          "id": 331,
                          "name": "IWrappedERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 493,
                          "src": "450:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                            "typeString": "contract IWrappedERC20"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 334,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 352,
                        "src": "479:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 333,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "479:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 336,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 352,
                        "src": "499:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 335,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "499:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "440:78:6"
                  },
                  "returnParameters": {
                    "id": 338,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "528:0:6"
                  },
                  "scope": 463,
                  "src": "416:223:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 376,
                    "nodeType": "Block",
                    "src": "783:121:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 364,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 354,
                              "src": "821:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                "typeString": "contract IWrappedERC20"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 367,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 354,
                                      "src": "851:5:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                        "typeString": "contract IWrappedERC20"
                                      }
                                    },
                                    "id": 368,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "transferFrom",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 483,
                                    "src": "851:18:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 369,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "851:27:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "id": 370,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 356,
                                  "src": "880:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 371,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 358,
                                  "src": "886:2:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 372,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 360,
                                  "src": "890:5:6",
                                  "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": 365,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "828:3:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 366,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "828:22:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 373,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "828:68:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                "typeString": "contract IWrappedERC20"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 363,
                            "name": "_callWithOptionalReturnData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 462,
                            "src": "793:27:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IWrappedERC20_$493_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (contract IWrappedERC20,bytes memory)"
                            }
                          },
                          "id": 374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "793:104:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 375,
                        "nodeType": "ExpressionStatement",
                        "src": "793:104:6"
                      }
                    ]
                  },
                  "id": 377,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "wrappedTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 361,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 354,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 377,
                        "src": "683:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                          "typeString": "contract IWrappedERC20"
                        },
                        "typeName": {
                          "id": 353,
                          "name": "IWrappedERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 493,
                          "src": "683:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                            "typeString": "contract IWrappedERC20"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 356,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 377,
                        "src": "712:12:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 355,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "712:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 358,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 377,
                        "src": "734:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 357,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "734:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 360,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 377,
                        "src": "754:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 359,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "754:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "673:100:6"
                  },
                  "returnParameters": {
                    "id": 362,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "783:0:6"
                  },
                  "scope": 463,
                  "src": "645:259:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 398,
                    "nodeType": "Block",
                    "src": "1026:115:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 387,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 379,
                              "src": "1064:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                "typeString": "contract IWrappedERC20"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 390,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 379,
                                      "src": "1094:5:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                        "typeString": "contract IWrappedERC20"
                                      }
                                    },
                                    "id": 391,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "approve",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 492,
                                    "src": "1094:13:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 392,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "1094:22:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "id": 393,
                                  "name": "spender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 381,
                                  "src": "1118:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 394,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 383,
                                  "src": "1127:5:6",
                                  "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": 388,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1071:3:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 389,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "1071:22:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 395,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1071:62:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                "typeString": "contract IWrappedERC20"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 386,
                            "name": "_callWithOptionalReturnData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 462,
                            "src": "1036:27:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IWrappedERC20_$493_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (contract IWrappedERC20,bytes memory)"
                            }
                          },
                          "id": 396,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1036:98:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 397,
                        "nodeType": "ExpressionStatement",
                        "src": "1036:98:6"
                      }
                    ]
                  },
                  "id": 399,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "wrappedApprove",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 384,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 379,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 399,
                        "src": "943:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                          "typeString": "contract IWrappedERC20"
                        },
                        "typeName": {
                          "id": 378,
                          "name": "IWrappedERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 493,
                          "src": "943:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                            "typeString": "contract IWrappedERC20"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 381,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 399,
                        "src": "972:15:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 380,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "972:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 383,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 399,
                        "src": "997:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 382,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "997:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "933:83:6"
                  },
                  "returnParameters": {
                    "id": 385,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1026:0:6"
                  },
                  "scope": 463,
                  "src": "910:231:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 461,
                    "nodeType": "Block",
                    "src": "1237:780:6",
                    "statements": [
                      {
                        "assignments": [
                          407
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 407,
                            "mutability": "mutable",
                            "name": "target",
                            "nodeType": "VariableDeclaration",
                            "scope": 461,
                            "src": "1247:14:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 406,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1247:7:6",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 412,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 410,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 401,
                              "src": "1272:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                "typeString": "contract IWrappedERC20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                "typeString": "contract IWrappedERC20"
                              }
                            ],
                            "id": 409,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1264:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 408,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1264:7:6",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 411,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1264:14:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1247:31:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 414,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 407,
                                  "src": "1296:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 415,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 671,
                                "src": "1296:17:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 416,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1296:19:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433230577261707065723a206e6f6e2d636f6e7472616374",
                              "id": 417,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1317:28:6",
                              "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": 413,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1288:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 418,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1288:58:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 419,
                        "nodeType": "ExpressionStatement",
                        "src": "1288:58:6"
                      },
                      {
                        "assignments": [
                          421,
                          423
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 421,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "scope": 461,
                            "src": "1417:12:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 420,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1417:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 423,
                            "mutability": "mutable",
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "scope": 461,
                            "src": "1431:17:6",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 422,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1431:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 428,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 426,
                              "name": "callData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 403,
                              "src": "1464:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 424,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 407,
                              "src": "1452:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 425,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "src": "1452:11:6",
                            "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": 427,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1452:21:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1416:57:6"
                      },
                      {
                        "condition": {
                          "id": 429,
                          "name": "success",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 421,
                          "src": "1487:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 459,
                          "nodeType": "Block",
                          "src": "1648:363:6",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 451,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 448,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 423,
                                    "src": "1720:4:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 449,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "1720:11:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 450,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1735:1:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "1720:16:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 457,
                              "nodeType": "IfStatement",
                              "src": "1716:95:6",
                              "trueBody": {
                                "id": 456,
                                "nodeType": "Block",
                                "src": "1738:73:6",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "hexValue": "4552433230577261707065723a206f7065726174696f6e206661696c6564",
                                          "id": 453,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1763:32:6",
                                          "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": 452,
                                        "name": "revert",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -19,
                                          -19
                                        ],
                                        "referencedDeclaration": -19,
                                        "src": "1756:6:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (string memory) pure"
                                        }
                                      },
                                      "id": 454,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1756:40:6",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 455,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1756:40:6"
                                  }
                                ]
                              }
                            },
                            {
                              "AST": {
                                "nodeType": "YulBlock",
                                "src": "1902:99:6",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1920:23:6",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "1938:4:6"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "1932:5:6"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1932:11:6"
                                    },
                                    "variables": [
                                      {
                                        "name": "size",
                                        "nodeType": "YulTypedName",
                                        "src": "1924:4:6",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1971:2:6",
                                              "type": "",
                                              "value": "32"
                                            },
                                            {
                                              "name": "data",
                                              "nodeType": "YulIdentifier",
                                              "src": "1975:4:6"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1967:3:6"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1967:13:6"
                                        },
                                        {
                                          "name": "size",
                                          "nodeType": "YulIdentifier",
                                          "src": "1982:4:6"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1960:6:6"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1960:27:6"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1960:27:6"
                                  }
                                ]
                              },
                              "evmVersion": "istanbul",
                              "externalReferences": [
                                {
                                  "declaration": 423,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "1938:4:6",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 423,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "1975:4:6",
                                  "valueSize": 1
                                }
                              ],
                              "id": 458,
                              "nodeType": "InlineAssembly",
                              "src": "1893:108:6"
                            }
                          ]
                        },
                        "id": 460,
                        "nodeType": "IfStatement",
                        "src": "1483:528:6",
                        "trueBody": {
                          "id": 447,
                          "nodeType": "Block",
                          "src": "1496:146:6",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 433,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 430,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 423,
                                    "src": "1514:4:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 431,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "1514:11:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 432,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1529:1:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "1514:16:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 446,
                              "nodeType": "IfStatement",
                              "src": "1510:122:6",
                              "trueBody": {
                                "id": 445,
                                "nodeType": "Block",
                                "src": "1532:100:6",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "id": 437,
                                              "name": "data",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 423,
                                              "src": "1569:4:6",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            {
                                              "components": [
                                                {
                                                  "id": 439,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "1576:4:6",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_bool_$",
                                                    "typeString": "type(bool)"
                                                  },
                                                  "typeName": {
                                                    "id": 438,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1576:4:6",
                                                    "typeDescriptions": {}
                                                  }
                                                }
                                              ],
                                              "id": 440,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "1575:6:6",
                                              "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": 435,
                                              "name": "abi",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -1,
                                              "src": "1558:3:6",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_abi",
                                                "typeString": "abi"
                                              }
                                            },
                                            "id": 436,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "decode",
                                            "nodeType": "MemberAccess",
                                            "src": "1558:10:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                              "typeString": "function () pure"
                                            }
                                          },
                                          "id": 441,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1558:24:6",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "hexValue": "4552433230577261707065723a206f7065726174696f6e206661696c6564",
                                          "id": 442,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1584:32:6",
                                          "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": 434,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -18,
                                          -18
                                        ],
                                        "referencedDeclaration": -18,
                                        "src": "1550:7:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 443,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1550:67:6",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 444,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1550:67:6"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 462,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_callWithOptionalReturnData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 404,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 401,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 462,
                        "src": "1184:19:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                          "typeString": "contract IWrappedERC20"
                        },
                        "typeName": {
                          "id": 400,
                          "name": "IWrappedERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 493,
                          "src": "1184:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                            "typeString": "contract IWrappedERC20"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 403,
                        "mutability": "mutable",
                        "name": "callData",
                        "nodeType": "VariableDeclaration",
                        "scope": 462,
                        "src": "1205:21:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 402,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1205:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1183:44:6"
                  },
                  "returnParameters": {
                    "id": 405,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1237:0:6"
                  },
                  "scope": 463,
                  "src": "1147:870:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 494,
              "src": "347:1672:6"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 493,
              "linearizedBaseContracts": [
                493
              ],
              "name": "IWrappedERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "a9059cbb",
                  "id": 472,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 468,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 465,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 472,
                        "src": "2069:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 464,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2069:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 467,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 472,
                        "src": "2081:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 466,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2081:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2068:27:6"
                  },
                  "returnParameters": {
                    "id": 471,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 470,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 472,
                        "src": "2114:4:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 469,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2114:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2113:6:6"
                  },
                  "scope": 493,
                  "src": "2051:69:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "23b872dd",
                  "id": 483,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 479,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 474,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 483,
                        "src": "2157:12:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 473,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2157:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 476,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 483,
                        "src": "2179:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 475,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2179:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 478,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 483,
                        "src": "2199:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 477,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2199:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2147:71:6"
                  },
                  "returnParameters": {
                    "id": 482,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 481,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 483,
                        "src": "2237:4:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 480,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2237:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2236:6:6"
                  },
                  "scope": 493,
                  "src": "2126:117:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "095ea7b3",
                  "id": 492,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 488,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 485,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 492,
                        "src": "2266:15:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 484,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2266:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 487,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 492,
                        "src": "2283:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 486,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2283:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2265:32:6"
                  },
                  "returnParameters": {
                    "id": 491,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 490,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 492,
                        "src": "2316:4:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 489,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2316:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2315:6:6"
                  },
                  "scope": 493,
                  "src": "2249:73:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 494,
              "src": "2021:303:6"
            }
          ],
          "src": "33:2292:6"
        },
        "id": 6
      },
      "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol": {
        "ast": {
          "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
          "exportedSymbols": {
            "ERC20Wrapper": [
              463
            ],
            "IRecoverableERC721": [
              651
            ],
            "IWrappedERC20": [
              493
            ],
            "ManagedIdentity": [
              322
            ],
            "Ownable": [
              206
            ],
            "Recoverable": [
              640
            ]
          },
          "id": 652,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 495,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:7"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "../metatx/ManagedIdentity.sol",
              "id": 497,
              "nodeType": "ImportDirective",
              "scope": 652,
              "sourceUnit": 323,
              "src": "66:62:7",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 496,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:15:7",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/Ownable.sol",
              "file": "../access/Ownable.sol",
              "id": 499,
              "nodeType": "ImportDirective",
              "scope": 652,
              "sourceUnit": 207,
              "src": "129:46:7",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 498,
                    "name": "Ownable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "137:7:7",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/ERC20Wrapper.sol",
              "file": "./ERC20Wrapper.sol",
              "id": 502,
              "nodeType": "ImportDirective",
              "scope": 652,
              "sourceUnit": 494,
              "src": "176:63:7",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 500,
                    "name": "IWrappedERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "184:13:7",
                    "typeDescriptions": {}
                  }
                },
                {
                  "foreign": {
                    "id": 501,
                    "name": "ERC20Wrapper",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "199:12:7",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 503,
                    "name": "ManagedIdentity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 322,
                    "src": "274:15:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                      "typeString": "contract ManagedIdentity"
                    }
                  },
                  "id": 504,
                  "nodeType": "InheritanceSpecifier",
                  "src": "274:15:7"
                },
                {
                  "baseName": {
                    "id": 505,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 206,
                    "src": "291:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$206",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 506,
                  "nodeType": "InheritanceSpecifier",
                  "src": "291:7:7"
                }
              ],
              "contractDependencies": [
                22,
                206,
                322
              ],
              "contractKind": "contract",
              "fullyImplemented": false,
              "id": 640,
              "linearizedBaseContracts": [
                640,
                206,
                22,
                322
              ],
              "name": "Recoverable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 509,
                  "libraryName": {
                    "id": 507,
                    "name": "ERC20Wrapper",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 463,
                    "src": "311:12:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20Wrapper_$463",
                      "typeString": "library ERC20Wrapper"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "305:37:7",
                  "typeName": {
                    "id": 508,
                    "name": "IWrappedERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 493,
                    "src": "328:13:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                      "typeString": "contract IWrappedERC20"
                    }
                  }
                },
                {
                  "body": {
                    "id": 571,
                    "nodeType": "Block",
                    "src": "1291:327:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 523,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "1319:10:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 524,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1319:12:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 522,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "1301:17:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1301:31:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 526,
                        "nodeType": "ExpressionStatement",
                        "src": "1301:31:7"
                      },
                      {
                        "assignments": [
                          528
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 528,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 571,
                            "src": "1342:14:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 527,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1342:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 531,
                        "initialValue": {
                          "expression": {
                            "id": 529,
                            "name": "accounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 513,
                            "src": "1359:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 530,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "1359:15:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1342:32:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 541,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 536,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 533,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 528,
                                  "src": "1392:6:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 534,
                                    "name": "tokens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 516,
                                    "src": "1402:6:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 535,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "1402:13:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1392:23:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 540,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 537,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 528,
                                  "src": "1419:6:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 538,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 519,
                                    "src": "1429:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                      "typeString": "uint256[] calldata"
                                    }
                                  },
                                  "id": 539,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "1429:14:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1419:24:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1392:51:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5265636f763a20696e636f6e73697374656e7420617272617973",
                              "id": 542,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1445:28:7",
                              "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": 532,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1384:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 543,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1384:90:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 544,
                        "nodeType": "ExpressionStatement",
                        "src": "1384:90:7"
                      },
                      {
                        "body": {
                          "id": 569,
                          "nodeType": "Block",
                          "src": "1522:90:7",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "id": 561,
                                      "name": "accounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 513,
                                      "src": "1577:8:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 563,
                                    "indexExpression": {
                                      "id": 562,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 546,
                                      "src": "1586:1:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1577:11:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 564,
                                      "name": "amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 519,
                                      "src": "1590:7:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 566,
                                    "indexExpression": {
                                      "id": 565,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 546,
                                      "src": "1598:1:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1590:10:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "baseExpression": {
                                          "id": 556,
                                          "name": "tokens",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 516,
                                          "src": "1550:6:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                            "typeString": "address[] calldata"
                                          }
                                        },
                                        "id": 558,
                                        "indexExpression": {
                                          "id": 557,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 546,
                                          "src": "1557:1:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "1550:9:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 555,
                                      "name": "IWrappedERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 493,
                                      "src": "1536:13:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IWrappedERC20_$493_$",
                                        "typeString": "type(contract IWrappedERC20)"
                                      }
                                    },
                                    "id": 559,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1536:24:7",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IWrappedERC20_$493",
                                      "typeString": "contract IWrappedERC20"
                                    }
                                  },
                                  "id": 560,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "wrappedTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 352,
                                  "src": "1536:40:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IWrappedERC20_$493_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IWrappedERC20_$493_$",
                                    "typeString": "function (contract IWrappedERC20,address,uint256)"
                                  }
                                },
                                "id": 567,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1536:65:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 568,
                              "nodeType": "ExpressionStatement",
                              "src": "1536:65:7"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 551,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 549,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 546,
                            "src": "1504:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 550,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 528,
                            "src": "1509:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1504:11:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 570,
                        "initializationExpression": {
                          "assignments": [
                            546
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 546,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 570,
                              "src": "1489:9:7",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 545,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1489:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 548,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 547,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1501:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1489:13:7"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 553,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "1517:3:7",
                            "subExpression": {
                              "id": 552,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 546,
                              "src": "1519:1:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 554,
                          "nodeType": "ExpressionStatement",
                          "src": "1517:3:7"
                        },
                        "nodeType": "ForStatement",
                        "src": "1484:128:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 510,
                    "nodeType": "StructuredDocumentation",
                    "src": "348:784:7",
                    "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": 572,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "recoverERC20s",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 520,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 513,
                        "mutability": "mutable",
                        "name": "accounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 572,
                        "src": "1169:27:7",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 511,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1169:7:7",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 512,
                          "nodeType": "ArrayTypeName",
                          "src": "1169:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 516,
                        "mutability": "mutable",
                        "name": "tokens",
                        "nodeType": "VariableDeclaration",
                        "scope": 572,
                        "src": "1206:25:7",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 514,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1206:7:7",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 515,
                          "nodeType": "ArrayTypeName",
                          "src": "1206:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 519,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 572,
                        "src": "1241:26:7",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 517,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1241:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 518,
                          "nodeType": "ArrayTypeName",
                          "src": "1241:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1159:114:7"
                  },
                  "returnParameters": {
                    "id": 521,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1291:0:7"
                  },
                  "scope": 640,
                  "src": "1137:481:7",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 638,
                    "nodeType": "Block",
                    "src": "2589:352:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 586,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "2617:10:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 587,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2617:12:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 585,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "2599:17:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 588,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2599:31:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 589,
                        "nodeType": "ExpressionStatement",
                        "src": "2599:31:7"
                      },
                      {
                        "assignments": [
                          591
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 591,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 638,
                            "src": "2640:14:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 590,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2640:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 594,
                        "initialValue": {
                          "expression": {
                            "id": 592,
                            "name": "accounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 576,
                            "src": "2657:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 593,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "2657:15:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2640:32:7"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 604,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 599,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 596,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 591,
                                  "src": "2690:6:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 597,
                                    "name": "contracts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 579,
                                    "src": "2700:9:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 598,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "2700:16:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2690:26:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 603,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 600,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 591,
                                  "src": "2720:6:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 601,
                                    "name": "tokenIds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 582,
                                    "src": "2730:8:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                      "typeString": "uint256[] calldata"
                                    }
                                  },
                                  "id": 602,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "2730:15:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2720:25:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2690:55:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5265636f763a20696e636f6e73697374656e7420617272617973",
                              "id": 605,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2747:28:7",
                              "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": 595,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2682:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 606,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2682:94:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 607,
                        "nodeType": "ExpressionStatement",
                        "src": "2682:94:7"
                      },
                      {
                        "body": {
                          "id": 636,
                          "nodeType": "Block",
                          "src": "2824:111:7",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 626,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "2892:4:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_Recoverable_$640",
                                          "typeString": "contract Recoverable"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_Recoverable_$640",
                                          "typeString": "contract Recoverable"
                                        }
                                      ],
                                      "id": 625,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2884:7:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 624,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2884:7:7",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 627,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2884:13:7",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 628,
                                      "name": "accounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 576,
                                      "src": "2899:8:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 630,
                                    "indexExpression": {
                                      "id": 629,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 609,
                                      "src": "2908:1:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2899:11:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 631,
                                      "name": "tokenIds",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 582,
                                      "src": "2912:8:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 633,
                                    "indexExpression": {
                                      "id": 632,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 609,
                                      "src": "2921:1:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2912:11:7",
                                    "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": 619,
                                          "name": "contracts",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 579,
                                          "src": "2857:9:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                            "typeString": "address[] calldata"
                                          }
                                        },
                                        "id": 621,
                                        "indexExpression": {
                                          "id": 620,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 609,
                                          "src": "2867:1:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "2857:12:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 618,
                                      "name": "IRecoverableERC721",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 651,
                                      "src": "2838:18:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IRecoverableERC721_$651_$",
                                        "typeString": "type(contract IRecoverableERC721)"
                                      }
                                    },
                                    "id": 622,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2838:32:7",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRecoverableERC721_$651",
                                      "typeString": "contract IRecoverableERC721"
                                    }
                                  },
                                  "id": 623,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "transferFrom",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 650,
                                  "src": "2838:45:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256) external"
                                  }
                                },
                                "id": 634,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2838:86:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 635,
                              "nodeType": "ExpressionStatement",
                              "src": "2838:86:7"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 614,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 612,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 609,
                            "src": "2806:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 613,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 591,
                            "src": "2811:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2806:11:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 637,
                        "initializationExpression": {
                          "assignments": [
                            609
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 609,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 637,
                              "src": "2791:9:7",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 608,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2791:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 611,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 610,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2803:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2791:13:7"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "2819:3:7",
                            "subExpression": {
                              "id": 615,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 609,
                              "src": "2821:1:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 617,
                          "nodeType": "ExpressionStatement",
                          "src": "2819:3:7"
                        },
                        "nodeType": "ForStatement",
                        "src": "2786:149:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 573,
                    "nodeType": "StructuredDocumentation",
                    "src": "1624:801:7",
                    "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": 639,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "recoverERC721s",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 583,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 576,
                        "mutability": "mutable",
                        "name": "accounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 639,
                        "src": "2463:27:7",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 574,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2463:7:7",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 575,
                          "nodeType": "ArrayTypeName",
                          "src": "2463:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 579,
                        "mutability": "mutable",
                        "name": "contracts",
                        "nodeType": "VariableDeclaration",
                        "scope": 639,
                        "src": "2500:28:7",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 577,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2500:7:7",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 578,
                          "nodeType": "ArrayTypeName",
                          "src": "2500:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 582,
                        "mutability": "mutable",
                        "name": "tokenIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 639,
                        "src": "2538:27:7",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 580,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2538:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 581,
                          "nodeType": "ArrayTypeName",
                          "src": "2538:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2453:118:7"
                  },
                  "returnParameters": {
                    "id": 584,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2589:0:7"
                  },
                  "scope": 640,
                  "src": "2430:511:7",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                }
              ],
              "scope": 652,
              "src": "241:2702:7"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 651,
              "linearizedBaseContracts": [
                651
              ],
              "name": "IRecoverableERC721",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 641,
                    "nodeType": "StructuredDocumentation",
                    "src": "2980:55:7",
                    "text": "See {IERC721-transferFrom(address,address,uint256)}"
                  },
                  "functionSelector": "23b872dd",
                  "id": 650,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 648,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 643,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 650,
                        "src": "3071:12:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 642,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3071:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 645,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 650,
                        "src": "3093:10:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 644,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3093:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 647,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 650,
                        "src": "3113:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 646,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3113:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3061:73:7"
                  },
                  "returnParameters": {
                    "id": 649,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3143:0:7"
                  },
                  "scope": 651,
                  "src": "3040:104:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 652,
              "src": "2945:201:7"
            }
          ],
          "src": "33:3114:7"
        },
        "id": 7
      },
      "@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol": {
        "ast": {
          "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol",
          "exportedSymbols": {
            "AddressIsContract": [
              672
            ]
          },
          "id": 673,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 653,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "206:31:8"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 654,
                "nodeType": "StructuredDocumentation",
                "src": "239:71:8",
                "text": " @dev Upgrades the address type to check if it is a contract."
              },
              "fullyImplemented": true,
              "id": 672,
              "linearizedBaseContracts": [
                672
              ],
              "name": "AddressIsContract",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 670,
                    "nodeType": "Block",
                    "src": "979:311:8",
                    "statements": [
                      {
                        "assignments": [
                          663
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 663,
                            "mutability": "mutable",
                            "name": "size",
                            "nodeType": "VariableDeclaration",
                            "scope": 670,
                            "src": "1176:12:8",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 662,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1176:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 664,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1176:12:8"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "1207:52:8",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1221:28:8",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "account",
                                    "nodeType": "YulIdentifier",
                                    "src": "1241:7:8"
                                  }
                                ],
                                "functionName": {
                                  "name": "extcodesize",
                                  "nodeType": "YulIdentifier",
                                  "src": "1229:11:8"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1229:20:8"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "1221:4:8"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 657,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1241:7:8",
                            "valueSize": 1
                          },
                          {
                            "declaration": 663,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1221:4:8",
                            "valueSize": 1
                          }
                        ],
                        "id": 665,
                        "nodeType": "InlineAssembly",
                        "src": "1198:61:8"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 668,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 666,
                            "name": "size",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 663,
                            "src": "1275:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 667,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1282:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1275:8:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 661,
                        "id": 669,
                        "nodeType": "Return",
                        "src": "1268:15:8"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 655,
                    "nodeType": "StructuredDocumentation",
                    "src": "343:565:8",
                    "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": 671,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isContract",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 658,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 657,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 671,
                        "src": "933:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 656,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "933:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "932:17:8"
                  },
                  "returnParameters": {
                    "id": 661,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 660,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 671,
                        "src": "973:4:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 659,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "973:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "972:6:8"
                  },
                  "scope": 672,
                  "src": "913:377:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 673,
              "src": "311:981:8"
            }
          ],
          "src": "206:1087:8"
        },
        "id": 8
      },
      "@animoca/ethereum-contracts-core/contracts/utils/types/UInt256ToDecimalString.sol": {
        "ast": {
          "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/types/UInt256ToDecimalString.sol",
          "exportedSymbols": {
            "UInt256ToDecimalString": [
              758
            ]
          },
          "id": 759,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 674,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "206:31:9"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "fullyImplemented": true,
              "id": 758,
              "linearizedBaseContracts": [
                758
              ],
              "name": "UInt256ToDecimalString",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 756,
                    "nodeType": "Block",
                    "src": "354:468:9",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 683,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 681,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 676,
                            "src": "368:5:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 682,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "377:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "368:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 687,
                        "nodeType": "IfStatement",
                        "src": "364:51:9",
                        "trueBody": {
                          "id": 686,
                          "nodeType": "Block",
                          "src": "380:35:9",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "30",
                                "id": 684,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "401:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                  "typeString": "literal_string \"0\""
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 680,
                              "id": 685,
                              "nodeType": "Return",
                              "src": "394:10:9"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          689
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 689,
                            "mutability": "mutable",
                            "name": "temp",
                            "nodeType": "VariableDeclaration",
                            "scope": 756,
                            "src": "424:12:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 688,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "424:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 691,
                        "initialValue": {
                          "id": 690,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 676,
                          "src": "439:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "424:20:9"
                      },
                      {
                        "assignments": [
                          693
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 693,
                            "mutability": "mutable",
                            "name": "digits",
                            "nodeType": "VariableDeclaration",
                            "scope": 756,
                            "src": "454:14:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 692,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "454:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 694,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "454:14:9"
                      },
                      {
                        "body": {
                          "id": 705,
                          "nodeType": "Block",
                          "src": "496:57:9",
                          "statements": [
                            {
                              "expression": {
                                "id": 699,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "510:8:9",
                                "subExpression": {
                                  "id": 698,
                                  "name": "digits",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 693,
                                  "src": "510:6:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 700,
                              "nodeType": "ExpressionStatement",
                              "src": "510:8:9"
                            },
                            {
                              "expression": {
                                "id": 703,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 701,
                                  "name": "temp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 689,
                                  "src": "532:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "/=",
                                "rightHandSide": {
                                  "hexValue": "3130",
                                  "id": 702,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "540:2:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "src": "532:10:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 704,
                              "nodeType": "ExpressionStatement",
                              "src": "532:10:9"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 697,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 695,
                            "name": "temp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 689,
                            "src": "485:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 696,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "493:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "485:9:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 706,
                        "nodeType": "WhileStatement",
                        "src": "478:75:9"
                      },
                      {
                        "assignments": [
                          708
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 708,
                            "mutability": "mutable",
                            "name": "buffer",
                            "nodeType": "VariableDeclaration",
                            "scope": 756,
                            "src": "562:19:9",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 707,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "562:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 713,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 711,
                              "name": "digits",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 693,
                              "src": "594:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 710,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "584:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes memory)"
                            },
                            "typeName": {
                              "id": 709,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "588:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            }
                          },
                          "id": 712,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "584:17:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "562:39:9"
                      },
                      {
                        "assignments": [
                          715
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 715,
                            "mutability": "mutable",
                            "name": "index",
                            "nodeType": "VariableDeclaration",
                            "scope": 756,
                            "src": "611:13:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 714,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "611:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 719,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 716,
                            "name": "digits",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 693,
                            "src": "627:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 717,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "636:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "627:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "611:26:9"
                      },
                      {
                        "expression": {
                          "id": 722,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 720,
                            "name": "temp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 689,
                            "src": "647:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 721,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 676,
                            "src": "654:5:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "647:12:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 723,
                        "nodeType": "ExpressionStatement",
                        "src": "647:12:9"
                      },
                      {
                        "body": {
                          "id": 749,
                          "nodeType": "Block",
                          "src": "687:98:9",
                          "statements": [
                            {
                              "expression": {
                                "id": 743,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 727,
                                    "name": "buffer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 708,
                                    "src": "701:6:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 730,
                                  "indexExpression": {
                                    "id": 729,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "--",
                                    "prefix": false,
                                    "src": "708:7:9",
                                    "subExpression": {
                                      "id": 728,
                                      "name": "index",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 715,
                                      "src": "708:5:9",
                                      "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:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 740,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "3438",
                                            "id": 735,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "732:2:9",
                                            "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": 738,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "id": 736,
                                                  "name": "temp",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 689,
                                                  "src": "738:4:9",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "%",
                                                "rightExpression": {
                                                  "hexValue": "3130",
                                                  "id": 737,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "745:2:9",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_10_by_1",
                                                    "typeString": "int_const 10"
                                                  },
                                                  "value": "10"
                                                },
                                                "src": "738:9:9",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 739,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "737:11:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "732:16:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 734,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "726:5:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint8_$",
                                          "typeString": "type(uint8)"
                                        },
                                        "typeName": {
                                          "id": 733,
                                          "name": "uint8",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "726:5:9",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 741,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "726:23:9",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    ],
                                    "id": 732,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "719:6:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes1_$",
                                      "typeString": "type(bytes1)"
                                    },
                                    "typeName": {
                                      "id": 731,
                                      "name": "bytes1",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "719:6:9",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 742,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "719:31:9",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "701:49:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "id": 744,
                              "nodeType": "ExpressionStatement",
                              "src": "701:49:9"
                            },
                            {
                              "expression": {
                                "id": 747,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 745,
                                  "name": "temp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 689,
                                  "src": "764:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "/=",
                                "rightHandSide": {
                                  "hexValue": "3130",
                                  "id": 746,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "772:2:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "src": "764:10:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 748,
                              "nodeType": "ExpressionStatement",
                              "src": "764:10:9"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 726,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 724,
                            "name": "temp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 689,
                            "src": "676:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 725,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "684:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "676:9:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 750,
                        "nodeType": "WhileStatement",
                        "src": "669:116:9"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 753,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 708,
                              "src": "808:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 752,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "801:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 751,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "801:6:9",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 754,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "801:14:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 680,
                        "id": 755,
                        "nodeType": "Return",
                        "src": "794:21:9"
                      }
                    ]
                  },
                  "id": 757,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toDecimalString",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 677,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 676,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 757,
                        "src": "301:13:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 675,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "301:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "300:15:9"
                  },
                  "returnParameters": {
                    "id": 680,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 679,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 757,
                        "src": "339:13:9",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 678,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "339:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "338:15:9"
                  },
                  "scope": 758,
                  "src": "276:546:9",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 759,
              "src": "239:585:9"
            }
          ],
          "src": "206:619:9"
        },
        "id": 9
      },
      "contracts/metadata/NFTBaseMetadataURI.sol": {
        "ast": {
          "absolutePath": "contracts/metadata/NFTBaseMetadataURI.sol",
          "exportedSymbols": {
            "ManagedIdentity": [
              322
            ],
            "NFTBaseMetadataURI": [
              818
            ],
            "Ownable": [
              206
            ],
            "UInt256ToDecimalString": [
              758
            ]
          },
          "id": 819,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 760,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:10"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/types/UInt256ToDecimalString.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/types/UInt256ToDecimalString.sol",
              "id": 762,
              "nodeType": "ImportDirective",
              "scope": 819,
              "sourceUnit": 759,
              "src": "66:121:10",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 761,
                    "name": "UInt256ToDecimalString",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:22:10",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "id": 764,
              "nodeType": "ImportDirective",
              "scope": 819,
              "sourceUnit": 323,
              "src": "188:102:10",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 763,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "196:15:10",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/Ownable.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/access/Ownable.sol",
              "id": 766,
              "nodeType": "ImportDirective",
              "scope": 819,
              "sourceUnit": 207,
              "src": "291:86:10",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 765,
                    "name": "Ownable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "299:7:10",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 767,
                    "name": "ManagedIdentity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 322,
                    "src": "419:15:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                      "typeString": "contract ManagedIdentity"
                    }
                  },
                  "id": 768,
                  "nodeType": "InheritanceSpecifier",
                  "src": "419:15:10"
                },
                {
                  "baseName": {
                    "id": 769,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 206,
                    "src": "436:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$206",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 770,
                  "nodeType": "InheritanceSpecifier",
                  "src": "436:7:10"
                }
              ],
              "contractDependencies": [
                22,
                206,
                322
              ],
              "contractKind": "contract",
              "fullyImplemented": false,
              "id": 818,
              "linearizedBaseContracts": [
                818,
                206,
                22,
                322
              ],
              "name": "NFTBaseMetadataURI",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 773,
                  "libraryName": {
                    "id": 771,
                    "name": "UInt256ToDecimalString",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 758,
                    "src": "456:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UInt256ToDecimalString_$758",
                      "typeString": "library UInt256ToDecimalString"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "450:41:10",
                  "typeName": {
                    "id": 772,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "483:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "anonymous": false,
                  "id": 777,
                  "name": "BaseMetadataURISet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 776,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 775,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "baseMetadataURI",
                        "nodeType": "VariableDeclaration",
                        "scope": 777,
                        "src": "522:22:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 774,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "522:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "521:24:10"
                  },
                  "src": "497:49:10"
                },
                {
                  "constant": false,
                  "functionSelector": "5b2bd79e",
                  "id": 779,
                  "mutability": "mutable",
                  "name": "baseMetadataURI",
                  "nodeType": "VariableDeclaration",
                  "scope": 818,
                  "src": "552:29:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 778,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "552:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 797,
                    "nodeType": "Block",
                    "src": "659:143:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 785,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "687:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 786,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "687:12:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 784,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "669:17:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 787,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "669:31:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 788,
                        "nodeType": "ExpressionStatement",
                        "src": "669:31:10"
                      },
                      {
                        "expression": {
                          "id": 791,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 789,
                            "name": "baseMetadataURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 779,
                            "src": "710:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 790,
                            "name": "baseMetadataURI_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 781,
                            "src": "728:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "src": "710:34:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 792,
                        "nodeType": "ExpressionStatement",
                        "src": "710:34:10"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 794,
                              "name": "baseMetadataURI_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 781,
                              "src": "778:16:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            ],
                            "id": 793,
                            "name": "BaseMetadataURISet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 777,
                            "src": "759:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory)"
                            }
                          },
                          "id": 795,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "759:36:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 796,
                        "nodeType": "EmitStatement",
                        "src": "754:41:10"
                      }
                    ]
                  },
                  "functionSelector": "7e518ec8",
                  "id": 798,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setBaseMetadataURI",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 782,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 781,
                        "mutability": "mutable",
                        "name": "baseMetadataURI_",
                        "nodeType": "VariableDeclaration",
                        "scope": 798,
                        "src": "616:32:10",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 780,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "616:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "615:34:10"
                  },
                  "returnParameters": {
                    "id": 783,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "659:0:10"
                  },
                  "scope": 818,
                  "src": "588:214:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 816,
                    "nodeType": "Block",
                    "src": "880:87:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 809,
                                  "name": "baseMetadataURI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 779,
                                  "src": "921:15:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                },
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 810,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 800,
                                      "src": "938:2:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 811,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "toDecimalString",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 757,
                                    "src": "938:18:10",
                                    "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": 812,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "938:20:10",
                                  "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": 807,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "904:3:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 808,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "904:16:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 813,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "904:55:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 806,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "897:6:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 805,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "897:6:10",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 814,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "897:63:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 804,
                        "id": 815,
                        "nodeType": "Return",
                        "src": "890:70:10"
                      }
                    ]
                  },
                  "id": 817,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_uri",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 801,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 800,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 817,
                        "src": "822:10:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 799,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "822:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "821:12:10"
                  },
                  "returnParameters": {
                    "id": 804,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 803,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 817,
                        "src": "865:13:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 802,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "865:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "864:15:10"
                  },
                  "scope": 818,
                  "src": "808:159:10",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 819,
              "src": "379:590:10"
            }
          ],
          "src": "33:937:10"
        },
        "id": 10
      },
      "contracts/token/ERC1155/ERC1155InventoryBase.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/ERC1155InventoryBase.sol",
          "exportedSymbols": {
            "ERC1155InventoryBase": [
              1382
            ],
            "ERC1155InventoryIdentifiersLib": [
              1464
            ],
            "IERC1155": [
              1579
            ],
            "IERC1155Inventory": [
              1682
            ],
            "IERC1155InventoryFunctions": [
              1719
            ],
            "IERC1155InventoryTotalSupply": [
              1731
            ],
            "IERC1155MetadataURI": [
              1743
            ],
            "IERC1155TokenReceiver": [
              1781
            ],
            "IERC165": [
              218
            ],
            "ManagedIdentity": [
              322
            ]
          },
          "id": 1383,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 820,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:11"
            },
            {
              "absolutePath": "contracts/token/ERC1155/ERC1155InventoryIdentifiersLib.sol",
              "file": "./ERC1155InventoryIdentifiersLib.sol",
              "id": 822,
              "nodeType": "ImportDirective",
              "scope": 1383,
              "sourceUnit": 1465,
              "src": "66:84:11",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 821,
                    "name": "ERC1155InventoryIdentifiersLib",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:30:11",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "id": 824,
              "nodeType": "ImportDirective",
              "scope": 1383,
              "sourceUnit": 219,
              "src": "151:93:11",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 823,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "159:7:11",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155.sol",
              "file": "./interfaces/IERC1155.sol",
              "id": 826,
              "nodeType": "ImportDirective",
              "scope": 1383,
              "sourceUnit": 1580,
              "src": "245:51:11",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 825,
                    "name": "IERC1155",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "253:8:11",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryFunctions.sol",
              "file": "./interfaces/IERC1155InventoryFunctions.sol",
              "id": 828,
              "nodeType": "ImportDirective",
              "scope": 1383,
              "sourceUnit": 1720,
              "src": "297:87:11",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 827,
                    "name": "IERC1155InventoryFunctions",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "305:26:11",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155Inventory.sol",
              "file": "./interfaces/IERC1155Inventory.sol",
              "id": 830,
              "nodeType": "ImportDirective",
              "scope": 1383,
              "sourceUnit": 1683,
              "src": "385:69:11",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 829,
                    "name": "IERC1155Inventory",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "393:17:11",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155MetadataURI.sol",
              "file": "./interfaces/IERC1155MetadataURI.sol",
              "id": 832,
              "nodeType": "ImportDirective",
              "scope": 1383,
              "sourceUnit": 1744,
              "src": "455:73:11",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 831,
                    "name": "IERC1155MetadataURI",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "463:19:11",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryTotalSupply.sol",
              "file": "./interfaces/IERC1155InventoryTotalSupply.sol",
              "id": 834,
              "nodeType": "ImportDirective",
              "scope": 1383,
              "sourceUnit": 1732,
              "src": "529:91:11",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 833,
                    "name": "IERC1155InventoryTotalSupply",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "537:28:11",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155TokenReceiver.sol",
              "file": "./interfaces/IERC1155TokenReceiver.sol",
              "id": 836,
              "nodeType": "ImportDirective",
              "scope": 1383,
              "sourceUnit": 1782,
              "src": "621:77:11",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 835,
                    "name": "IERC1155TokenReceiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "629:21:11",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "id": 838,
              "nodeType": "ImportDirective",
              "scope": 1383,
              "sourceUnit": 323,
              "src": "699:102:11",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 837,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "707:15:11",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 840,
                    "name": "ManagedIdentity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 322,
                    "src": "1218:15:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                      "typeString": "contract ManagedIdentity"
                    }
                  },
                  "id": 841,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1218:15:11"
                },
                {
                  "baseName": {
                    "id": 842,
                    "name": "IERC165",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 218,
                    "src": "1235:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC165_$218",
                      "typeString": "contract IERC165"
                    }
                  },
                  "id": 843,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1235:7:11"
                },
                {
                  "baseName": {
                    "id": 844,
                    "name": "IERC1155Inventory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1682,
                    "src": "1244:17:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155Inventory_$1682",
                      "typeString": "contract IERC1155Inventory"
                    }
                  },
                  "id": 845,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1244:17:11"
                },
                {
                  "baseName": {
                    "id": 846,
                    "name": "IERC1155MetadataURI",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1743,
                    "src": "1263:19:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155MetadataURI_$1743",
                      "typeString": "contract IERC1155MetadataURI"
                    }
                  },
                  "id": 847,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1263:19:11"
                },
                {
                  "baseName": {
                    "id": 848,
                    "name": "IERC1155InventoryTotalSupply",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1731,
                    "src": "1284:28:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155InventoryTotalSupply_$1731",
                      "typeString": "contract IERC1155InventoryTotalSupply"
                    }
                  },
                  "id": 849,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1284:28:11"
                }
              ],
              "contractDependencies": [
                218,
                322,
                1579,
                1682,
                1719,
                1731,
                1743
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 839,
                "nodeType": "StructuredDocumentation",
                "src": "803:372:11",
                "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": 1382,
              "linearizedBaseContracts": [
                1382,
                1731,
                1743,
                1682,
                1719,
                1579,
                218,
                322
              ],
              "name": "ERC1155InventoryBase",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 852,
                  "libraryName": {
                    "id": 850,
                    "name": "ERC1155InventoryIdentifiersLib",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1464,
                    "src": "1325:30:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155InventoryIdentifiersLib_$1464",
                      "typeString": "library ERC1155InventoryIdentifiersLib"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1319:49:11",
                  "typeName": {
                    "id": 851,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1360:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 854,
                  "mutability": "immutable",
                  "name": "_collectionMaskLength",
                  "nodeType": "VariableDeclaration",
                  "scope": 1382,
                  "src": "1374:48:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 853,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1374:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 857,
                  "mutability": "constant",
                  "name": "_ERC1155_RECEIVED",
                  "nodeType": "VariableDeclaration",
                  "scope": 1382,
                  "src": "1514:55:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 855,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1514:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "hexValue": "30786632336136653631",
                    "id": 856,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1559:10:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_4063915617_by_1",
                      "typeString": "int_const 4063915617"
                    },
                    "value": "0xf23a6e61"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 860,
                  "mutability": "constant",
                  "name": "_ERC1155_BATCH_RECEIVED",
                  "nodeType": "VariableDeclaration",
                  "scope": 1382,
                  "src": "1670:61:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 858,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1670:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "hexValue": "30786263313937633831",
                    "id": 859,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1721:10:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3155786881_by_1",
                      "typeString": "int_const 3155786881"
                    },
                    "value": "0xbc197c81"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 863,
                  "mutability": "constant",
                  "name": "_BURNT_NFT_OWNER",
                  "nodeType": "VariableDeclaration",
                  "scope": 1382,
                  "src": "1790:111:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 861,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1790:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "307864656164303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030",
                    "id": 862,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1835:66:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_100719116927691798707895874029850069994745719541394658707722161504685790330880_by_1",
                      "typeString": "int_const 1007...(70 digits omitted)...0880"
                    },
                    "value": "0xdead000000000000000000000000000000000000000000000000000000000000"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 869,
                  "mutability": "mutable",
                  "name": "_operators",
                  "nodeType": "VariableDeclaration",
                  "scope": 1382,
                  "src": "1948:64:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                    "typeString": "mapping(address => mapping(address => bool))"
                  },
                  "typeName": {
                    "id": 868,
                    "keyType": {
                      "id": 864,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1956:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1948:44:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                      "typeString": "mapping(address => mapping(address => bool))"
                    },
                    "valueType": {
                      "id": 867,
                      "keyType": {
                        "id": 865,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1975:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1967:24:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      },
                      "valueType": {
                        "id": 866,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1986:4:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 875,
                  "mutability": "mutable",
                  "name": "_balances",
                  "nodeType": "VariableDeclaration",
                  "scope": 1382,
                  "src": "2063:66:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(uint256 => mapping(address => uint256))"
                  },
                  "typeName": {
                    "id": 874,
                    "keyType": {
                      "id": 870,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2071:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2063:47:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                      "typeString": "mapping(uint256 => mapping(address => uint256))"
                    },
                    "valueType": {
                      "id": 873,
                      "keyType": {
                        "id": 871,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2090:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "2082:27:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "valueType": {
                        "id": 872,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2101:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 879,
                  "mutability": "mutable",
                  "name": "_supplies",
                  "nodeType": "VariableDeclaration",
                  "scope": 1382,
                  "src": "2170:46:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 878,
                    "keyType": {
                      "id": 876,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2178:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2170:27:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 877,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2189:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 883,
                  "mutability": "mutable",
                  "name": "_owners",
                  "nodeType": "VariableDeclaration",
                  "scope": 1382,
                  "src": "2249:44:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 882,
                    "keyType": {
                      "id": 880,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2257:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2249:27:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 881,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2268:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 887,
                  "mutability": "mutable",
                  "name": "_creators",
                  "nodeType": "VariableDeclaration",
                  "scope": 1382,
                  "src": "2335:46:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                    "typeString": "mapping(uint256 => address)"
                  },
                  "typeName": {
                    "id": 886,
                    "keyType": {
                      "id": 884,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2343:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2335:27:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                      "typeString": "mapping(uint256 => address)"
                    },
                    "valueType": {
                      "id": 885,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2354:7:11",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 907,
                    "nodeType": "Block",
                    "src": "2430:167:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 899,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 895,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 893,
                                  "name": "collectionMaskLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 889,
                                  "src": "2448:20:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 894,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2472:1:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "2448:25:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 898,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 896,
                                  "name": "collectionMaskLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 889,
                                  "src": "2477:20:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "hexValue": "323536",
                                  "id": 897,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2500:3:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_256_by_1",
                                    "typeString": "int_const 256"
                                  },
                                  "value": "256"
                                },
                                "src": "2477:26:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2448:55:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a2077726f6e67206d61736b206c656e677468",
                              "id": 900,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2505:30:11",
                              "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": 892,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2440:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 901,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2440:96:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 902,
                        "nodeType": "ExpressionStatement",
                        "src": "2440:96:11"
                      },
                      {
                        "expression": {
                          "id": 905,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 903,
                            "name": "_collectionMaskLength",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 854,
                            "src": "2546:21:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 904,
                            "name": "collectionMaskLength",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 889,
                            "src": "2570:20:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2546:44:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 906,
                        "nodeType": "ExpressionStatement",
                        "src": "2546:44:11"
                      }
                    ]
                  },
                  "id": 908,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 890,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 889,
                        "mutability": "mutable",
                        "name": "collectionMaskLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 908,
                        "src": "2400:28:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 888,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2400:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2399:30:11"
                  },
                  "returnParameters": {
                    "id": 891,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2430:0:11"
                  },
                  "scope": 1382,
                  "src": "2388:209:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    217
                  ],
                  "body": {
                    "id": 952,
                    "nodeType": "Block",
                    "src": "2851:353:11",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 950,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 943,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 936,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 929,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "id": 922,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 917,
                                    "name": "interfaceId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 911,
                                    "src": "2880:11:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 919,
                                          "name": "IERC165",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 218,
                                          "src": "2900:7:11",
                                          "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": 918,
                                        "name": "type",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -27,
                                        "src": "2895:4:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 920,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2895:13:11",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$218",
                                        "typeString": "type(contract IERC165)"
                                      }
                                    },
                                    "id": 921,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "interfaceId",
                                    "nodeType": "MemberAccess",
                                    "src": "2895:25:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "src": "2880:40:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "id": 928,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 923,
                                    "name": "interfaceId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 911,
                                    "src": "2936:11:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 925,
                                          "name": "IERC1155",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1579,
                                          "src": "2956:8:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IERC1155_$1579_$",
                                            "typeString": "type(contract IERC1155)"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_type$_t_contract$_IERC1155_$1579_$",
                                            "typeString": "type(contract IERC1155)"
                                          }
                                        ],
                                        "id": 924,
                                        "name": "type",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -27,
                                        "src": "2951:4:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 926,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2951:14:11",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155_$1579",
                                        "typeString": "type(contract IERC1155)"
                                      }
                                    },
                                    "id": 927,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "interfaceId",
                                    "nodeType": "MemberAccess",
                                    "src": "2951:26:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "src": "2936:41:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "2880:97:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 935,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 930,
                                  "name": "interfaceId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 911,
                                  "src": "2993:11:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 932,
                                        "name": "IERC1155MetadataURI",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1743,
                                        "src": "3013:19:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC1155MetadataURI_$1743_$",
                                          "typeString": "type(contract IERC1155MetadataURI)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_type$_t_contract$_IERC1155MetadataURI_$1743_$",
                                          "typeString": "type(contract IERC1155MetadataURI)"
                                        }
                                      ],
                                      "id": 931,
                                      "name": "type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -27,
                                      "src": "3008:4:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 933,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3008:25:11",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155MetadataURI_$1743",
                                      "typeString": "type(contract IERC1155MetadataURI)"
                                    }
                                  },
                                  "id": 934,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "interfaceId",
                                  "nodeType": "MemberAccess",
                                  "src": "3008:37:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "2993:52:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2880:165:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 942,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 937,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 911,
                                "src": "3061:11:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 939,
                                      "name": "IERC1155InventoryFunctions",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1719,
                                      "src": "3081:26:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155InventoryFunctions_$1719_$",
                                        "typeString": "type(contract IERC1155InventoryFunctions)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155InventoryFunctions_$1719_$",
                                        "typeString": "type(contract IERC1155InventoryFunctions)"
                                      }
                                    ],
                                    "id": 938,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "3076:4:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 940,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3076:32:11",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155InventoryFunctions_$1719",
                                    "typeString": "type(contract IERC1155InventoryFunctions)"
                                  }
                                },
                                "id": 941,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "3076:44:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "3061:59:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "2880:240:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 949,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 944,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 911,
                              "src": "3136:11:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 946,
                                    "name": "IERC1155InventoryTotalSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1731,
                                    "src": "3156:28:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155InventoryTotalSupply_$1731_$",
                                      "typeString": "type(contract IERC1155InventoryTotalSupply)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155InventoryTotalSupply_$1731_$",
                                      "typeString": "type(contract IERC1155InventoryTotalSupply)"
                                    }
                                  ],
                                  "id": 945,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "3151:4:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 947,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3151:34:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155InventoryTotalSupply_$1731",
                                  "typeString": "type(contract IERC1155InventoryTotalSupply)"
                                }
                              },
                              "id": 948,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "3151:46:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "3136:61:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2880:317:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 916,
                        "id": 951,
                        "nodeType": "Return",
                        "src": "2861:336:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 909,
                    "nodeType": "StructuredDocumentation",
                    "src": "2732:23:11",
                    "text": "@inheritdoc IERC165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 953,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 913,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2827:8:11"
                  },
                  "parameters": {
                    "id": 912,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 911,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 953,
                        "src": "2787:18:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 910,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2787:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2786:20:11"
                  },
                  "returnParameters": {
                    "id": 916,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 915,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 953,
                        "src": "2845:4:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 914,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2845:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2844:6:11"
                  },
                  "scope": 1382,
                  "src": "2760:444:11",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1635
                  ],
                  "body": {
                    "id": 1001,
                    "nodeType": "Block",
                    "src": "3470:248:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 970,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 965,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 956,
                                "src": "3488:5:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 968,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3505:1:11",
                                    "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": 967,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3497:7:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 966,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3497:7:11",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 969,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3497:10:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3488:19:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207a65726f2061646472657373",
                              "id": 971,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3509:25:11",
                              "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": 964,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3480:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 972,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3480:55:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 973,
                        "nodeType": "ExpressionStatement",
                        "src": "3480:55:11"
                      },
                      {
                        "condition": {
                          "arguments": [
                            {
                              "id": 976,
                              "name": "_collectionMaskLength",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 854,
                              "src": "3572:21:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 974,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 958,
                              "src": "3550:2:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 975,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isNonFungibleToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1428,
                            "src": "3550:21:11",
                            "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": 977,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3550:44:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 994,
                        "nodeType": "IfStatement",
                        "src": "3546:128:11",
                        "trueBody": {
                          "id": 993,
                          "nodeType": "Block",
                          "src": "3596:78:11",
                          "statements": [
                            {
                              "expression": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 988,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "baseExpression": {
                                              "id": 982,
                                              "name": "_owners",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 883,
                                              "src": "3633:7:11",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                "typeString": "mapping(uint256 => uint256)"
                                              }
                                            },
                                            "id": 984,
                                            "indexExpression": {
                                              "id": 983,
                                              "name": "id",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 958,
                                              "src": "3641:2:11",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "3633:11:11",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 981,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "3625:7:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint160_$",
                                            "typeString": "type(uint160)"
                                          },
                                          "typeName": {
                                            "id": 980,
                                            "name": "uint160",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "3625:7:11",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 985,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3625:20:11",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      ],
                                      "id": 979,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3617:7:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 978,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3617:7:11",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 986,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3617:29:11",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "id": 987,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 956,
                                    "src": "3650:5:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "3617:38:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "hexValue": "30",
                                  "id": 990,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3662:1:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "id": 991,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "3617:46:11",
                                "trueExpression": {
                                  "hexValue": "31",
                                  "id": 989,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3658:1:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "functionReturnParameters": 963,
                              "id": 992,
                              "nodeType": "Return",
                              "src": "3610:53:11"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 995,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 875,
                              "src": "3691:9:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 997,
                            "indexExpression": {
                              "id": 996,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 958,
                              "src": "3701:2:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3691:13:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 999,
                          "indexExpression": {
                            "id": 998,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 956,
                            "src": "3705:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3691:20:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 963,
                        "id": 1000,
                        "nodeType": "Return",
                        "src": "3684:27:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 954,
                    "nodeType": "StructuredDocumentation",
                    "src": "3339:33:11",
                    "text": "@inheritdoc IERC1155Inventory"
                  },
                  "functionSelector": "00fdd58e",
                  "id": 1002,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 960,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3443:8:11"
                  },
                  "parameters": {
                    "id": 959,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 956,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 1002,
                        "src": "3396:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 955,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3396:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 958,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1002,
                        "src": "3411:10:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 957,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3411:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3395:27:11"
                  },
                  "returnParameters": {
                    "id": 963,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 962,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1002,
                        "src": "3461:7:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 961,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3461:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3460:9:11"
                  },
                  "scope": 1382,
                  "src": "3377:341:11",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1649
                  ],
                  "body": {
                    "id": 1065,
                    "nodeType": "Block",
                    "src": "3895:302:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1021,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 1017,
                                  "name": "owners",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1006,
                                  "src": "3913:6:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 1018,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "3913:13:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 1019,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1009,
                                  "src": "3930:3:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                    "typeString": "uint256[] calldata"
                                  }
                                },
                                "id": 1020,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "3930:10:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3913:27:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a20696e636f6e73697374656e7420617272617973",
                              "id": 1022,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3942:32:11",
                              "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": 1016,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3905:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1023,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3905:70:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1024,
                        "nodeType": "ExpressionStatement",
                        "src": "3905:70:11"
                      },
                      {
                        "assignments": [
                          1029
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1029,
                            "mutability": "mutable",
                            "name": "balances",
                            "nodeType": "VariableDeclaration",
                            "scope": 1065,
                            "src": "3986:25:11",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1027,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3986:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1028,
                              "nodeType": "ArrayTypeName",
                              "src": "3986:9:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1036,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 1033,
                                "name": "owners",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1006,
                                "src": "4028:6:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 1034,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "4028:13:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1032,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "4014:13:11",
                            "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": 1030,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4018:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1031,
                              "nodeType": "ArrayTypeName",
                              "src": "4018:9:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 1035,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4014:28:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3986:56:11"
                      },
                      {
                        "body": {
                          "id": 1061,
                          "nodeType": "Block",
                          "src": "4098:67:11",
                          "statements": [
                            {
                              "expression": {
                                "id": 1059,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 1048,
                                    "name": "balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1029,
                                    "src": "4112:8:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 1050,
                                  "indexExpression": {
                                    "id": 1049,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1038,
                                    "src": "4121:1:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4112:11:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "id": 1052,
                                        "name": "owners",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1006,
                                        "src": "4136:6:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 1054,
                                      "indexExpression": {
                                        "id": 1053,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1038,
                                        "src": "4143:1:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4136:9:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "baseExpression": {
                                        "id": 1055,
                                        "name": "ids",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1009,
                                        "src": "4147:3:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                          "typeString": "uint256[] calldata"
                                        }
                                      },
                                      "id": 1057,
                                      "indexExpression": {
                                        "id": 1056,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1038,
                                        "src": "4151:1:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4147:6:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 1051,
                                    "name": "balanceOf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1002,
                                    "src": "4126:9:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (address,uint256) view returns (uint256)"
                                    }
                                  },
                                  "id": 1058,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4126:28:11",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4112:42:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1060,
                              "nodeType": "ExpressionStatement",
                              "src": "4112:42:11"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1044,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1041,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1038,
                            "src": "4073:1:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "expression": {
                              "id": 1042,
                              "name": "owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1006,
                              "src": "4078:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 1043,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "4078:13:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4073:18:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1062,
                        "initializationExpression": {
                          "assignments": [
                            1038
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1038,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 1062,
                              "src": "4058:9:11",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1037,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4058:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 1040,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 1039,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4070:1:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4058:13:11"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 1046,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "4093:3:11",
                            "subExpression": {
                              "id": 1045,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1038,
                              "src": "4095:1:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1047,
                          "nodeType": "ExpressionStatement",
                          "src": "4093:3:11"
                        },
                        "nodeType": "ForStatement",
                        "src": "4053:112:11"
                      },
                      {
                        "expression": {
                          "id": 1063,
                          "name": "balances",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1029,
                          "src": "4182:8:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "functionReturnParameters": 1015,
                        "id": 1064,
                        "nodeType": "Return",
                        "src": "4175:15:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1003,
                    "nodeType": "StructuredDocumentation",
                    "src": "3724:33:11",
                    "text": "@inheritdoc IERC1155Inventory"
                  },
                  "functionSelector": "4e1273f4",
                  "id": 1066,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOfBatch",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1011,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3859:8:11"
                  },
                  "parameters": {
                    "id": 1010,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1006,
                        "mutability": "mutable",
                        "name": "owners",
                        "nodeType": "VariableDeclaration",
                        "scope": 1066,
                        "src": "3786:25:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1004,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3786:7:11",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1005,
                          "nodeType": "ArrayTypeName",
                          "src": "3786:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1009,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 1066,
                        "src": "3813:22:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1007,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3813:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1008,
                          "nodeType": "ArrayTypeName",
                          "src": "3813:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3785:51:11"
                  },
                  "returnParameters": {
                    "id": 1015,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1014,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1066,
                        "src": "3877:16:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1012,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3877:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1013,
                          "nodeType": "ArrayTypeName",
                          "src": "3877:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3876:18:11"
                  },
                  "scope": 1382,
                  "src": "3762:435:11",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1568
                  ],
                  "body": {
                    "id": 1101,
                    "nodeType": "Block",
                    "src": "4316:217:11",
                    "statements": [
                      {
                        "assignments": [
                          1076
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1076,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 1101,
                            "src": "4326:14:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1075,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4326:7:11",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1079,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1077,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "4343:10:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 1078,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4343:12:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4326:29:11"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1083,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1081,
                                "name": "operator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1069,
                                "src": "4373:8:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 1082,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1076,
                                "src": "4385:6:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4373:18:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a2073656c662d617070726f76616c",
                              "id": 1084,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4393:26:11",
                              "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": 1080,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4365:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1085,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4365:55:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1086,
                        "nodeType": "ExpressionStatement",
                        "src": "4365:55:11"
                      },
                      {
                        "expression": {
                          "id": 1093,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 1087,
                                "name": "_operators",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 869,
                                "src": "4430:10:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 1090,
                              "indexExpression": {
                                "id": 1088,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1076,
                                "src": "4441:6:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4430:18:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 1091,
                            "indexExpression": {
                              "id": 1089,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1069,
                              "src": "4449:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4430:28:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1092,
                            "name": "approved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1071,
                            "src": "4461:8:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4430:39:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1094,
                        "nodeType": "ExpressionStatement",
                        "src": "4430:39:11"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1096,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1076,
                              "src": "4499:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1097,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1069,
                              "src": "4507:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1098,
                              "name": "approved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1071,
                              "src": "4517:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1095,
                            "name": "ApprovalForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1501,
                            "src": "4484:14:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,bool)"
                            }
                          },
                          "id": 1099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4484:42:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1100,
                        "nodeType": "EmitStatement",
                        "src": "4479:47:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1067,
                    "nodeType": "StructuredDocumentation",
                    "src": "4203:24:11",
                    "text": "@inheritdoc IERC1155"
                  },
                  "functionSelector": "a22cb465",
                  "id": 1102,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1073,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4307:8:11"
                  },
                  "parameters": {
                    "id": 1072,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1069,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 1102,
                        "src": "4259:16:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1068,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4259:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1071,
                        "mutability": "mutable",
                        "name": "approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 1102,
                        "src": "4277:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1070,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4277:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4258:33:11"
                  },
                  "returnParameters": {
                    "id": 1074,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4316:0:11"
                  },
                  "scope": 1382,
                  "src": "4232:301:11",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1578
                  ],
                  "body": {
                    "id": 1119,
                    "nodeType": "Block",
                    "src": "4676:56:11",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 1113,
                              "name": "_operators",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 869,
                              "src": "4693:10:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                "typeString": "mapping(address => mapping(address => bool))"
                              }
                            },
                            "id": 1115,
                            "indexExpression": {
                              "id": 1114,
                              "name": "tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1105,
                              "src": "4704:10:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4693:22:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 1117,
                          "indexExpression": {
                            "id": 1116,
                            "name": "operator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1107,
                            "src": "4716:8:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4693:32:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1112,
                        "id": 1118,
                        "nodeType": "Return",
                        "src": "4686:39:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1103,
                    "nodeType": "StructuredDocumentation",
                    "src": "4539:24:11",
                    "text": "@inheritdoc IERC1155"
                  },
                  "functionSelector": "e985e9c5",
                  "id": 1120,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1109,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4652:8:11"
                  },
                  "parameters": {
                    "id": 1108,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1105,
                        "mutability": "mutable",
                        "name": "tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 1120,
                        "src": "4594:18:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1104,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4594:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1107,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 1120,
                        "src": "4614:16:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1106,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4614:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4593:38:11"
                  },
                  "returnParameters": {
                    "id": 1112,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1111,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1120,
                        "src": "4670:4:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1110,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4670:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4669:6:11"
                  },
                  "scope": 1382,
                  "src": "4568:164:11",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1615
                  ],
                  "body": {
                    "id": 1133,
                    "nodeType": "Block",
                    "src": "4983:44:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 1129,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1123,
                              "src": "5000:2:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1130,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isFungibleToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1404,
                            "src": "5000:18:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (bool)"
                            }
                          },
                          "id": 1131,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5000:20:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1128,
                        "id": 1132,
                        "nodeType": "Return",
                        "src": "4993:27:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1121,
                    "nodeType": "StructuredDocumentation",
                    "src": "4867:33:11",
                    "text": "@inheritdoc IERC1155Inventory"
                  },
                  "functionSelector": "adebf6f2",
                  "id": 1134,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isFungible",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1125,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4959:8:11"
                  },
                  "parameters": {
                    "id": 1124,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1123,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1134,
                        "src": "4925:10:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1122,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4925:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4924:12:11"
                  },
                  "returnParameters": {
                    "id": 1128,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1127,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1134,
                        "src": "4977:4:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1126,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4977:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4976:6:11"
                  },
                  "scope": 1382,
                  "src": "4905:122:11",
                  "stateMutability": "pure",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1624
                  ],
                  "body": {
                    "id": 1156,
                    "nodeType": "Block",
                    "src": "5157:168:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 1146,
                                  "name": "_collectionMaskLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 854,
                                  "src": "5200:21:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 1144,
                                  "name": "nftId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1137,
                                  "src": "5175:5:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1145,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isNonFungibleToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1428,
                                "src": "5175:24:11",
                                "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": 1147,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5175:47:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f7420616e204e4654",
                              "id": 1148,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5224:23:11",
                              "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": 1143,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5167:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5167:81:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1150,
                        "nodeType": "ExpressionStatement",
                        "src": "5167:81:11"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1153,
                              "name": "_collectionMaskLength",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 854,
                              "src": "5296:21:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 1151,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1137,
                              "src": "5265:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1152,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getNonFungibleCollection",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1445,
                            "src": "5265:30:11",
                            "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": 1154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5265:53:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 1142,
                        "id": 1155,
                        "nodeType": "Return",
                        "src": "5258:60:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1135,
                    "nodeType": "StructuredDocumentation",
                    "src": "5033:33:11",
                    "text": "@inheritdoc IERC1155Inventory"
                  },
                  "functionSelector": "c7778baa",
                  "id": 1157,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "collectionOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1139,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5130:8:11"
                  },
                  "parameters": {
                    "id": 1138,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1137,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1157,
                        "src": "5093:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1136,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5093:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5092:15:11"
                  },
                  "returnParameters": {
                    "id": 1142,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1141,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1157,
                        "src": "5148:7:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1140,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5148:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5147:9:11"
                  },
                  "scope": 1382,
                  "src": "5071:254:11",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1606
                  ],
                  "body": {
                    "id": 1190,
                    "nodeType": "Block",
                    "src": "5448:156:11",
                    "statements": [
                      {
                        "assignments": [
                          1167
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1167,
                            "mutability": "mutable",
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 1190,
                            "src": "5458:13:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1166,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5458:7:11",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1177,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 1172,
                                    "name": "_owners",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 883,
                                    "src": "5490:7:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 1174,
                                  "indexExpression": {
                                    "id": 1173,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1160,
                                    "src": "5498:5:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5490:14:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1171,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5482:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint160_$",
                                  "typeString": "type(uint160)"
                                },
                                "typeName": {
                                  "id": 1170,
                                  "name": "uint160",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5482:7:11",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1175,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5482:23:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            ],
                            "id": 1169,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5474:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 1168,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5474:7:11",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 1176,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5474:32:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5458:48:11"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1184,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1179,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1167,
                                "src": "5524:5:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1182,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5541:1:11",
                                    "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": 1181,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5533:7:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1180,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5533:7:11",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1183,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5533:10:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "5524:19:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d6578697374696e67204e4654",
                              "id": 1185,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5545:29:11",
                              "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": 1178,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5516:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5516:59:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1187,
                        "nodeType": "ExpressionStatement",
                        "src": "5516:59:11"
                      },
                      {
                        "expression": {
                          "id": 1188,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1167,
                          "src": "5592:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 1165,
                        "id": 1189,
                        "nodeType": "Return",
                        "src": "5585:12:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1158,
                    "nodeType": "StructuredDocumentation",
                    "src": "5331:33:11",
                    "text": "@inheritdoc IERC1155Inventory"
                  },
                  "functionSelector": "6352211e",
                  "id": 1191,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1162,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5421:8:11"
                  },
                  "parameters": {
                    "id": 1161,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1160,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1191,
                        "src": "5386:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1159,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5386:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5385:15:11"
                  },
                  "returnParameters": {
                    "id": 1165,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1164,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1191,
                        "src": "5439:7:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1163,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5439:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5438:9:11"
                  },
                  "scope": 1382,
                  "src": "5369:235:11",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1730
                  ],
                  "body": {
                    "id": 1229,
                    "nodeType": "Block",
                    "src": "5870:200:11",
                    "statements": [
                      {
                        "condition": {
                          "arguments": [
                            {
                              "id": 1202,
                              "name": "_collectionMaskLength",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 854,
                              "src": "5906:21:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 1200,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1194,
                              "src": "5884:2:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1201,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isNonFungibleToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1428,
                            "src": "5884:21:11",
                            "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": 1203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5884:44:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 1227,
                          "nodeType": "Block",
                          "src": "6019:45:11",
                          "statements": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 1223,
                                  "name": "_supplies",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 879,
                                  "src": "6040:9:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 1225,
                                "indexExpression": {
                                  "id": 1224,
                                  "name": "id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1194,
                                  "src": "6050:2:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6040:13:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 1199,
                              "id": 1226,
                              "nodeType": "Return",
                              "src": "6033:20:11"
                            }
                          ]
                        },
                        "id": 1228,
                        "nodeType": "IfStatement",
                        "src": "5880:184:11",
                        "trueBody": {
                          "id": 1222,
                          "nodeType": "Block",
                          "src": "5930:83:11",
                          "statements": [
                            {
                              "expression": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  "id": 1217,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "baseExpression": {
                                              "id": 1208,
                                              "name": "_owners",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 883,
                                              "src": "5967:7:11",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                "typeString": "mapping(uint256 => uint256)"
                                              }
                                            },
                                            "id": 1210,
                                            "indexExpression": {
                                              "id": 1209,
                                              "name": "id",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1194,
                                              "src": "5975:2:11",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "5967:11:11",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 1207,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "5959:7:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint160_$",
                                            "typeString": "type(uint160)"
                                          },
                                          "typeName": {
                                            "id": 1206,
                                            "name": "uint160",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "5959:7:11",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 1211,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5959:20:11",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      ],
                                      "id": 1205,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5951:7:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1204,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5951:7:11",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1212,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5951:29:11",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 1215,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5992:1:11",
                                        "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": 1214,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5984:7:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1213,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5984:7:11",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1216,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5984:10:11",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "src": "5951:43:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "hexValue": "31",
                                  "id": 1219,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6001:1:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "id": 1220,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "5951:51:11",
                                "trueExpression": {
                                  "hexValue": "30",
                                  "id": 1218,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5997:1:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "functionReturnParameters": 1199,
                              "id": 1221,
                              "nodeType": "Return",
                              "src": "5944:58:11"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1192,
                    "nodeType": "StructuredDocumentation",
                    "src": "5739:44:11",
                    "text": "@inheritdoc IERC1155InventoryTotalSupply"
                  },
                  "functionSelector": "bd85b039",
                  "id": 1230,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1196,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5843:8:11"
                  },
                  "parameters": {
                    "id": 1195,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1194,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1230,
                        "src": "5809:10:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1193,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5809:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5808:12:11"
                  },
                  "returnParameters": {
                    "id": 1199,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1198,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1230,
                        "src": "5861:7:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1197,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5861:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5860:9:11"
                  },
                  "scope": 1382,
                  "src": "5788:282:11",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1271,
                    "nodeType": "Block",
                    "src": "6584:328:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1241,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "6602:55:11",
                              "subExpression": {
                                "arguments": [
                                  {
                                    "id": 1239,
                                    "name": "_collectionMaskLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 854,
                                    "src": "6635:21:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 1237,
                                    "name": "collectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1233,
                                    "src": "6603:12:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1238,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "isNonFungibleToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1428,
                                  "src": "6603:31:11",
                                  "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": 1240,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6603:54:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f74206120636f6c6c656374696f6e",
                              "id": 1242,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6659:29:11",
                              "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": 1236,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6594:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6594:95:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1244,
                        "nodeType": "ExpressionStatement",
                        "src": "6594:95:11"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1253,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "baseExpression": {
                                  "id": 1246,
                                  "name": "_creators",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 887,
                                  "src": "6707:9:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                    "typeString": "mapping(uint256 => address)"
                                  }
                                },
                                "id": 1248,
                                "indexExpression": {
                                  "id": 1247,
                                  "name": "collectionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1233,
                                  "src": "6717:12:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6707:23:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1251,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6742:1:11",
                                    "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": 1250,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6734:7:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1249,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6734:7:11",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1252,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6734:10:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6707:37:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206578697374696e6720636f6c6c656374696f6e",
                              "id": 1254,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6746:32:11",
                              "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": 1245,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6699:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1255,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6699:80:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1256,
                        "nodeType": "ExpressionStatement",
                        "src": "6699:80:11"
                      },
                      {
                        "expression": {
                          "id": 1262,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 1257,
                              "name": "_creators",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 887,
                              "src": "6789:9:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 1259,
                            "indexExpression": {
                              "id": 1258,
                              "name": "collectionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1233,
                              "src": "6799:12:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6789:23:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 1260,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 312,
                              "src": "6815:10:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                "typeString": "function () view returns (address payable)"
                              }
                            },
                            "id": 1261,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6815:12:11",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "6789:38:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1263,
                        "nodeType": "ExpressionStatement",
                        "src": "6789:38:11"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1265,
                              "name": "collectionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1233,
                              "src": "6860:12:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 1266,
                                  "name": "collectionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1233,
                                  "src": "6874:12:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1267,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isFungibleToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1404,
                                "src": "6874:28:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (bool)"
                                }
                              },
                              "id": 1268,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6874:30:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1264,
                            "name": "CollectionCreated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1597,
                            "src": "6842:17:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (uint256,bool)"
                            }
                          },
                          "id": 1269,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6842:63:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1270,
                        "nodeType": "EmitStatement",
                        "src": "6837:68:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1231,
                    "nodeType": "StructuredDocumentation",
                    "src": "6205:308:11",
                    "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": 1272,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_createCollection",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1234,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1233,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1272,
                        "src": "6545:20:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1232,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6545:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6544:22:11"
                  },
                  "returnParameters": {
                    "id": 1235,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6584:0:11"
                  },
                  "scope": 1382,
                  "src": "6518:394:11",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1292,
                    "nodeType": "Block",
                    "src": "6998:152:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1284,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "7016:55:11",
                              "subExpression": {
                                "arguments": [
                                  {
                                    "id": 1282,
                                    "name": "_collectionMaskLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 854,
                                    "src": "7049:21:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 1280,
                                    "name": "collectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1274,
                                    "src": "7017:12:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1281,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "isNonFungibleToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1428,
                                  "src": "7017:31:11",
                                  "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": 1283,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7017:54:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f74206120636f6c6c656374696f6e",
                              "id": 1285,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7073:29:11",
                              "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": 1279,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7008:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1286,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7008:95:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1287,
                        "nodeType": "ExpressionStatement",
                        "src": "7008:95:11"
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 1288,
                            "name": "_creators",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 887,
                            "src": "7120:9:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 1290,
                          "indexExpression": {
                            "id": 1289,
                            "name": "collectionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1274,
                            "src": "7130:12:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7120:23:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 1278,
                        "id": 1291,
                        "nodeType": "Return",
                        "src": "7113:30:11"
                      }
                    ]
                  },
                  "id": 1293,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_creator",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1275,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1274,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1293,
                        "src": "6936:20:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1273,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6936:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6935:22:11"
                  },
                  "returnParameters": {
                    "id": 1278,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1277,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1293,
                        "src": "6989:7:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1276,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6989:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6988:9:11"
                  },
                  "scope": 1382,
                  "src": "6918:232:11",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1314,
                    "nodeType": "Block",
                    "src": "7662:68:11",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1312,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 1305,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1303,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1296,
                                  "src": "7680:4:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 1304,
                                  "name": "sender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1298,
                                  "src": "7688:6:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "7680:14:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 1306,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7679:16:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 1307,
                                "name": "_operators",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 869,
                                "src": "7699:10:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 1309,
                              "indexExpression": {
                                "id": 1308,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1296,
                                "src": "7710:4:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7699:16:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 1311,
                            "indexExpression": {
                              "id": 1310,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1298,
                              "src": "7716:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7699:24:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7679:44:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1302,
                        "id": 1313,
                        "nodeType": "Return",
                        "src": "7672:51:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1294,
                    "nodeType": "StructuredDocumentation",
                    "src": "7285:282:11",
                    "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": 1315,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_isOperatable",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1299,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1296,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1315,
                        "src": "7595:12:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1295,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7595:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1298,
                        "mutability": "mutable",
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 1315,
                        "src": "7609:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1297,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7609:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7594:30:11"
                  },
                  "returnParameters": {
                    "id": 1302,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1301,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1315,
                        "src": "7656:4:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1300,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7656:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7655:6:11"
                  },
                  "scope": 1382,
                  "src": "7572:158:11",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1346,
                    "nodeType": "Block",
                    "src": "8360:158:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 1342,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 1334,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 312,
                                      "src": "8422:10:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                        "typeString": "function () view returns (address payable)"
                                      }
                                    },
                                    "id": 1335,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8422:12:11",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 1336,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1318,
                                    "src": "8436:4:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1337,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1322,
                                    "src": "8442:2:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 1338,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1324,
                                    "src": "8446:5:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 1339,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1326,
                                    "src": "8453:4:11",
                                    "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": 1331,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1320,
                                        "src": "8400:2:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 1330,
                                      "name": "IERC1155TokenReceiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1781,
                                      "src": "8378:21:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$1781_$",
                                        "typeString": "type(contract IERC1155TokenReceiver)"
                                      }
                                    },
                                    "id": 1332,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8378:25:11",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC1155TokenReceiver_$1781",
                                      "typeString": "contract IERC1155TokenReceiver"
                                    }
                                  },
                                  "id": 1333,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onERC1155Received",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1762,
                                  "src": "8378:43:11",
                                  "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": 1340,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8378:80:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 1341,
                                "name": "_ERC1155_RECEIVED",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 857,
                                "src": "8462:17:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "8378:101:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207472616e736665722072656675736564",
                              "id": 1343,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8481:29:11",
                              "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": 1329,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8370:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1344,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8370:141:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1345,
                        "nodeType": "ExpressionStatement",
                        "src": "8370:141:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1316,
                    "nodeType": "StructuredDocumentation",
                    "src": "7736:460:11",
                    "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": 1347,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_callOnERC1155Received",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1327,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1318,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1347,
                        "src": "8242:12:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1317,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8242:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1320,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 1347,
                        "src": "8264:10:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1319,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8264:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1322,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1347,
                        "src": "8284:10:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1321,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8284:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1324,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 1347,
                        "src": "8304:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1323,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8304:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1326,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 1347,
                        "src": "8327:17:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1325,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8327:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8232:118:11"
                  },
                  "returnParameters": {
                    "id": 1328,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8360:0:11"
                  },
                  "scope": 1382,
                  "src": "8201:317:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1380,
                    "nodeType": "Block",
                    "src": "9186:205:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 1376,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 1368,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 312,
                                      "src": "9266:10:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                        "typeString": "function () view returns (address payable)"
                                      }
                                    },
                                    "id": 1369,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9266:12:11",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 1370,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1350,
                                    "src": "9280:4:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1371,
                                    "name": "ids",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1355,
                                    "src": "9286:3:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 1372,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1358,
                                    "src": "9291:6:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 1373,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1360,
                                    "src": "9299:4:11",
                                    "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": 1365,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1352,
                                        "src": "9239:2:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 1364,
                                      "name": "IERC1155TokenReceiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1781,
                                      "src": "9217:21:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$1781_$",
                                        "typeString": "type(contract IERC1155TokenReceiver)"
                                      }
                                    },
                                    "id": 1366,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9217:25:11",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC1155TokenReceiver_$1781",
                                      "typeString": "contract IERC1155TokenReceiver"
                                    }
                                  },
                                  "id": 1367,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onERC1155BatchReceived",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1780,
                                  "src": "9217:48:11",
                                  "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": 1374,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9217:87:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 1375,
                                "name": "_ERC1155_BATCH_RECEIVED",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 860,
                                "src": "9308:23:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "9217:114:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207472616e736665722072656675736564",
                              "id": 1377,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9345:29:11",
                              "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": 1363,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9196:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9196:188:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1379,
                        "nodeType": "ExpressionStatement",
                        "src": "9196:188:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1348,
                    "nodeType": "StructuredDocumentation",
                    "src": "8524:473:11",
                    "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": 1381,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_callOnERC1155BatchReceived",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1361,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1350,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1381,
                        "src": "9048:12:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1349,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9048:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1352,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 1381,
                        "src": "9070:10:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1351,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9070:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1355,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 1381,
                        "src": "9090:20:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1353,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "9090:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1354,
                          "nodeType": "ArrayTypeName",
                          "src": "9090:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1358,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 1381,
                        "src": "9120:23:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1356,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "9120:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1357,
                          "nodeType": "ArrayTypeName",
                          "src": "9120:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1360,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 1381,
                        "src": "9153:17:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1359,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9153:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9038:138:11"
                  },
                  "returnParameters": {
                    "id": 1362,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9186:0:11"
                  },
                  "scope": 1382,
                  "src": "9002:389:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 1383,
              "src": "1176:8217:11"
            }
          ],
          "src": "33:9361:11"
        },
        "id": 11
      },
      "contracts/token/ERC1155/ERC1155InventoryIdentifiersLib.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/ERC1155InventoryIdentifiersLib.sol",
          "exportedSymbols": {
            "ERC1155InventoryIdentifiersLib": [
              1464
            ]
          },
          "id": 1465,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1384,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:12"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 1385,
                "nodeType": "StructuredDocumentation",
                "src": "66:497:12",
                "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": 1464,
              "linearizedBaseContracts": [
                1464
              ],
              "name": "ERC1155InventoryIdentifiersLib",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 1390,
                  "mutability": "constant",
                  "name": "_NF_BIT",
                  "nodeType": "VariableDeclaration",
                  "scope": 1464,
                  "src": "711:44:12",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1386,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "711:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                      "typeString": "int_const 5789...(69 digits omitted)...9968"
                    },
                    "id": 1389,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "hexValue": "31",
                      "id": 1387,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "747:1:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<<",
                    "rightExpression": {
                      "hexValue": "323535",
                      "id": 1388,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "752:3:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_255_by_1",
                        "typeString": "int_const 255"
                      },
                      "value": "255"
                    },
                    "src": "747:8:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                      "typeString": "int_const 5789...(69 digits omitted)...9968"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1403,
                    "nodeType": "Block",
                    "src": "828:41:12",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1401,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1399,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 1397,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1392,
                              "src": "845:2:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "id": 1398,
                              "name": "_NF_BIT",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1390,
                              "src": "850:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "845:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 1400,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "861:1:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "845:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1396,
                        "id": 1402,
                        "nodeType": "Return",
                        "src": "838:24:12"
                      }
                    ]
                  },
                  "id": 1404,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isFungibleToken",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1393,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1392,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1404,
                        "src": "787:10:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1391,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "787:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "786:12:12"
                  },
                  "returnParameters": {
                    "id": 1396,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1395,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1404,
                        "src": "822:4:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1394,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "822:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "821:6:12"
                  },
                  "scope": 1464,
                  "src": "762:107:12",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1427,
                    "nodeType": "Block",
                    "src": "974:101:12",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1425,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1417,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1415,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1413,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1406,
                                "src": "991:2:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "id": 1414,
                                "name": "_NF_BIT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1390,
                                "src": "996:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "991:12:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 1416,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1007:1:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "991:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1424,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1422,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1418,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1406,
                                "src": "1012:2:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 1420,
                                    "name": "collectionMaskLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1408,
                                    "src": "1042:20:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1419,
                                  "name": "_getNonFungibleTokenMask",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1463,
                                  "src": "1017:24:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 1421,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1017:46:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1012:51:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 1423,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1067:1:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1012:56:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "991:77:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1412,
                        "id": 1426,
                        "nodeType": "Return",
                        "src": "984:84:12"
                      }
                    ]
                  },
                  "id": 1428,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isNonFungibleToken",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1409,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1406,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1428,
                        "src": "903:10:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1405,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "903:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1408,
                        "mutability": "mutable",
                        "name": "collectionMaskLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 1428,
                        "src": "915:28:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1407,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "915:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "902:42:12"
                  },
                  "returnParameters": {
                    "id": 1412,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1411,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1428,
                        "src": "968:4:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1410,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "968:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "967:6:12"
                  },
                  "scope": 1464,
                  "src": "875:200:12",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1444,
                    "nodeType": "Block",
                    "src": "1192:79:12",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1442,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1437,
                            "name": "nftId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1430,
                            "src": "1209:5:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "id": 1441,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "~",
                            "prefix": true,
                            "src": "1217:47:12",
                            "subExpression": {
                              "arguments": [
                                {
                                  "id": 1439,
                                  "name": "collectionMaskLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1432,
                                  "src": "1243:20:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1438,
                                "name": "_getNonFungibleTokenMask",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1463,
                                "src": "1218:24:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1440,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1218:46:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1209:55:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 1436,
                        "id": 1443,
                        "nodeType": "Return",
                        "src": "1202:62:12"
                      }
                    ]
                  },
                  "id": 1445,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getNonFungibleCollection",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1433,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1430,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1445,
                        "src": "1115:13:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1429,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1115:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1432,
                        "mutability": "mutable",
                        "name": "collectionMaskLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 1445,
                        "src": "1130:28:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1431,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1130:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1114:45:12"
                  },
                  "returnParameters": {
                    "id": 1436,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1435,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1445,
                        "src": "1183:7:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1434,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1183:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1182:9:12"
                  },
                  "scope": 1464,
                  "src": "1081:190:12",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1462,
                    "nodeType": "Block",
                    "src": "1372:63:12",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1460,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1457,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "31",
                                  "id": 1452,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1390:1:12",
                                  "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": 1455,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "323536",
                                        "id": 1453,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1396:3:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_256_by_1",
                                          "typeString": "int_const 256"
                                        },
                                        "value": "256"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 1454,
                                        "name": "collectionMaskLength",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1447,
                                        "src": "1402:20:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "1396:26:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 1456,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "1395:28:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1390:33:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 1458,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1389:35:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 1459,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1427:1:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1389:39:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 1451,
                        "id": 1461,
                        "nodeType": "Return",
                        "src": "1382:46:12"
                      }
                    ]
                  },
                  "id": 1463,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getNonFungibleTokenMask",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1448,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1447,
                        "mutability": "mutable",
                        "name": "collectionMaskLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 1463,
                        "src": "1311:28:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1446,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1311:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1310:30:12"
                  },
                  "returnParameters": {
                    "id": 1451,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1450,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1463,
                        "src": "1363:7:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1449,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1363:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1362:9:12"
                  },
                  "scope": 1464,
                  "src": "1277:158:12",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 1465,
              "src": "564:873:12"
            }
          ],
          "src": "33:1405:12"
        },
        "id": 12
      },
      "contracts/token/ERC1155/interfaces/IERC1155.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155.sol",
          "exportedSymbols": {
            "IERC1155": [
              1579
            ]
          },
          "id": 1580,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1466,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:13"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1467,
                "nodeType": "StructuredDocumentation",
                "src": "66:187:13",
                "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": 1579,
              "linearizedBaseContracts": [
                1579
              ],
              "name": "IERC1155",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 1479,
                  "name": "TransferSingle",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1478,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1469,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 1479,
                        "src": "300:25:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1468,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "300:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1471,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1479,
                        "src": "327:21:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1470,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "327:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1473,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 1479,
                        "src": "350:19:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1472,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "350:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1475,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1479,
                        "src": "371:11:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1474,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "371:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1477,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 1479,
                        "src": "384:14:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1476,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "384:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "299:100:13"
                  },
                  "src": "279:121:13"
                },
                {
                  "anonymous": false,
                  "id": 1493,
                  "name": "TransferBatch",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1492,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1481,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 1493,
                        "src": "426:25:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1480,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "426:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1483,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1493,
                        "src": "453:21:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1482,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "453:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1485,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 1493,
                        "src": "476:19:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1484,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "476:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1488,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 1493,
                        "src": "497:14:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1486,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "497:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1487,
                          "nodeType": "ArrayTypeName",
                          "src": "497:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1491,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_values",
                        "nodeType": "VariableDeclaration",
                        "scope": 1493,
                        "src": "513:17:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1489,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "513:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1490,
                          "nodeType": "ArrayTypeName",
                          "src": "513:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "425:106:13"
                  },
                  "src": "406:126:13"
                },
                {
                  "anonymous": false,
                  "id": 1501,
                  "name": "ApprovalForAll",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1500,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1495,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 1501,
                        "src": "559:22:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1494,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "559:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1497,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 1501,
                        "src": "583:25:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1496,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "583:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1499,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 1501,
                        "src": "610:14:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1498,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "610:4:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "558:67:13"
                  },
                  "src": "538:88:13"
                },
                {
                  "anonymous": false,
                  "id": 1507,
                  "name": "URI",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1506,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1503,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 1507,
                        "src": "642:13:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1502,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "642:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1505,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1507,
                        "src": "657:19:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1504,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "657:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "641:36:13"
                  },
                  "src": "632:46:13"
                },
                {
                  "documentation": {
                    "id": 1508,
                    "nodeType": "StructuredDocumentation",
                    "src": "684:634: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 `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": 1521,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1519,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1510,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1521,
                        "src": "1358:12:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1509,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1358:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1512,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 1521,
                        "src": "1380:10:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1511,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1380:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1514,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1521,
                        "src": "1400:10:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1513,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1400:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1516,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 1521,
                        "src": "1420:13:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1515,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1420:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1518,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 1521,
                        "src": "1443:19:13",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1517,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1443:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1348:120:13"
                  },
                  "returnParameters": {
                    "id": 1520,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1477:0:13"
                  },
                  "scope": 1579,
                  "src": "1323:155:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1522,
                    "nodeType": "StructuredDocumentation",
                    "src": "1484:734:13",
                    "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": 1537,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1535,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1524,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1537,
                        "src": "2263:12:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1523,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2263:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1526,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 1537,
                        "src": "2285:10:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1525,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2285:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1529,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 1537,
                        "src": "2305:22:13",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1527,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2305:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1528,
                          "nodeType": "ArrayTypeName",
                          "src": "2305:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1532,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 1537,
                        "src": "2337:25:13",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1530,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2337:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1531,
                          "nodeType": "ArrayTypeName",
                          "src": "2337:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1534,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 1537,
                        "src": "2372:19:13",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1533,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2372:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2253:144:13"
                  },
                  "returnParameters": {
                    "id": 1536,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2406:0:13"
                  },
                  "scope": 1579,
                  "src": "2223:184:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1538,
                    "nodeType": "StructuredDocumentation",
                    "src": "2413:255: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 The balance of `id` owned by account `owner`."
                  },
                  "functionSelector": "00fdd58e",
                  "id": 1547,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1543,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1540,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 1547,
                        "src": "2692:13:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1539,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2692:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1542,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1547,
                        "src": "2707:10:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1541,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2707:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2691:27:13"
                  },
                  "returnParameters": {
                    "id": 1546,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1545,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1547,
                        "src": "2742:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1544,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2742:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2741:9:13"
                  },
                  "scope": 1579,
                  "src": "2673:78:13",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1548,
                    "nodeType": "StructuredDocumentation",
                    "src": "2757:342:13",
                    "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": 1560,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOfBatch",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1555,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1551,
                        "mutability": "mutable",
                        "name": "owners",
                        "nodeType": "VariableDeclaration",
                        "scope": 1560,
                        "src": "3128:25:13",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1549,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3128:7:13",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1550,
                          "nodeType": "ArrayTypeName",
                          "src": "3128:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1554,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 1560,
                        "src": "3155:22:13",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1552,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3155:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1553,
                          "nodeType": "ArrayTypeName",
                          "src": "3155:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3127:51:13"
                  },
                  "returnParameters": {
                    "id": 1559,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1558,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1560,
                        "src": "3202:16:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1556,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3202:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1557,
                          "nodeType": "ArrayTypeName",
                          "src": "3202:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3201:18:13"
                  },
                  "scope": 1579,
                  "src": "3104:116:13",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1561,
                    "nodeType": "StructuredDocumentation",
                    "src": "3226:237:13",
                    "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": 1568,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1566,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1563,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 1568,
                        "src": "3495:16:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1562,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3495:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1565,
                        "mutability": "mutable",
                        "name": "approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 1568,
                        "src": "3513:13:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1564,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3513:4:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3494:33:13"
                  },
                  "returnParameters": {
                    "id": 1567,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3536:0:13"
                  },
                  "scope": 1579,
                  "src": "3468:69:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1569,
                    "nodeType": "StructuredDocumentation",
                    "src": "3543:249:13",
                    "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": 1578,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1574,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1571,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 1578,
                        "src": "3823:13:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1570,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3823:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1573,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 1578,
                        "src": "3838:16:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1572,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3838:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3822:33:13"
                  },
                  "returnParameters": {
                    "id": 1577,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1576,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1578,
                        "src": "3879:4:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1575,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3879:4:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3878:6:13"
                  },
                  "scope": 1579,
                  "src": "3797:88:13",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1580,
              "src": "254:3633:13"
            }
          ],
          "src": "33:3855:13"
        },
        "id": 13
      },
      "contracts/token/ERC1155/interfaces/IERC1155Inventory.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155Inventory.sol",
          "exportedSymbols": {
            "IERC1155": [
              1579
            ],
            "IERC1155Inventory": [
              1682
            ],
            "IERC1155InventoryFunctions": [
              1719
            ]
          },
          "id": 1683,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1581,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:14"
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155.sol",
              "file": "./IERC1155.sol",
              "id": 1583,
              "nodeType": "ImportDirective",
              "scope": 1683,
              "sourceUnit": 1580,
              "src": "66:40:14",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1582,
                    "name": "IERC1155",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:8:14",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryFunctions.sol",
              "file": "./IERC1155InventoryFunctions.sol",
              "id": 1585,
              "nodeType": "ImportDirective",
              "scope": 1683,
              "sourceUnit": 1720,
              "src": "107:76:14",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1584,
                    "name": "IERC1155InventoryFunctions",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "115:26:14",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 1587,
                    "name": "IERC1155",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1579,
                    "src": "1817:8:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155_$1579",
                      "typeString": "contract IERC1155"
                    }
                  },
                  "id": 1588,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1817:8:14"
                },
                {
                  "baseName": {
                    "id": 1589,
                    "name": "IERC1155InventoryFunctions",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1719,
                    "src": "1827:26:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155InventoryFunctions_$1719",
                      "typeString": "contract IERC1155InventoryFunctions"
                    }
                  },
                  "id": 1590,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1827:26:14"
                }
              ],
              "contractDependencies": [
                1579,
                1719
              ],
              "contractKind": "interface",
              "documentation": {
                "id": 1586,
                "nodeType": "StructuredDocumentation",
                "src": "185:1600:14",
                "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": 1682,
              "linearizedBaseContracts": [
                1682,
                1719,
                1579
              ],
              "name": "IERC1155Inventory",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 1591,
                    "nodeType": "StructuredDocumentation",
                    "src": "1988:382:14",
                    "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": 1597,
                  "name": "CollectionCreated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1596,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1593,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1597,
                        "src": "2399:28:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1592,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2399:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1595,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "fungible",
                        "nodeType": "VariableDeclaration",
                        "scope": 1597,
                        "src": "2429:21:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1594,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2429:4:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2398:53:14"
                  },
                  "src": "2375:77:14"
                },
                {
                  "baseFunctions": [
                    1704
                  ],
                  "documentation": {
                    "id": 1598,
                    "nodeType": "StructuredDocumentation",
                    "src": "2458:256:14",
                    "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": 1606,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1602,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2765:8:14"
                  },
                  "parameters": {
                    "id": 1601,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1600,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1606,
                        "src": "2736:13:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1599,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2736:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2735:15:14"
                  },
                  "returnParameters": {
                    "id": 1605,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1604,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1606,
                        "src": "2783:7:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1603,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2783:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2782:9:14"
                  },
                  "scope": 1682,
                  "src": "2719:73:14",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1711
                  ],
                  "documentation": {
                    "id": 1607,
                    "nodeType": "StructuredDocumentation",
                    "src": "2798:290:14",
                    "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": 1615,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isFungible",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1611,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3139:8:14"
                  },
                  "parameters": {
                    "id": 1610,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1609,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1615,
                        "src": "3113:10:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1608,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3113:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3112:12:14"
                  },
                  "returnParameters": {
                    "id": 1614,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1613,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1615,
                        "src": "3157:4:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1612,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3157:4:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3156:6:14"
                  },
                  "scope": 1682,
                  "src": "3093:70:14",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1718
                  ],
                  "documentation": {
                    "id": 1616,
                    "nodeType": "StructuredDocumentation",
                    "src": "3169:534:14",
                    "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": 1624,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "collectionOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1620,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3759:8:14"
                  },
                  "parameters": {
                    "id": 1619,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1618,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1624,
                        "src": "3730:13:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1617,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3730:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3729:15:14"
                  },
                  "returnParameters": {
                    "id": 1623,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1622,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1624,
                        "src": "3777:7:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1621,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3777:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3776:9:14"
                  },
                  "scope": 1682,
                  "src": "3708:78:14",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1547
                  ],
                  "documentation": {
                    "id": 1625,
                    "nodeType": "StructuredDocumentation",
                    "src": "3921:420:14",
                    "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": 1635,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1631,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4406:8:14"
                  },
                  "parameters": {
                    "id": 1630,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1627,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 1635,
                        "src": "4365:13:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1626,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4365:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1629,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1635,
                        "src": "4380:10:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1628,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4380:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4364:27:14"
                  },
                  "returnParameters": {
                    "id": 1634,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1633,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1635,
                        "src": "4424:7:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1632,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4424:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4423:9:14"
                  },
                  "scope": 1682,
                  "src": "4346:87:14",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1560
                  ],
                  "documentation": {
                    "id": 1636,
                    "nodeType": "StructuredDocumentation",
                    "src": "4439:553:14",
                    "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": 1649,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOfBatch",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1644,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5086:8:14"
                  },
                  "parameters": {
                    "id": 1643,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1639,
                        "mutability": "mutable",
                        "name": "owners",
                        "nodeType": "VariableDeclaration",
                        "scope": 1649,
                        "src": "5021:25:14",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1637,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5021:7:14",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1638,
                          "nodeType": "ArrayTypeName",
                          "src": "5021:9:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1642,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 1649,
                        "src": "5048:22:14",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1640,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5048:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1641,
                          "nodeType": "ArrayTypeName",
                          "src": "5048:9:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5020:51:14"
                  },
                  "returnParameters": {
                    "id": 1648,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1647,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1649,
                        "src": "5104:16:14",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1645,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5104:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1646,
                          "nodeType": "ArrayTypeName",
                          "src": "5104:9:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5103:18:14"
                  },
                  "scope": 1682,
                  "src": "4997:125:14",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1521
                  ],
                  "documentation": {
                    "id": 1650,
                    "nodeType": "StructuredDocumentation",
                    "src": "5128:977:14",
                    "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": 1664,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1662,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6265:8:14"
                  },
                  "parameters": {
                    "id": 1661,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1652,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1664,
                        "src": "6145:12:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1651,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6145:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1654,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 1664,
                        "src": "6167:10:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1653,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6167:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1656,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1664,
                        "src": "6187:10:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1655,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6187:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1658,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 1664,
                        "src": "6207:13:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1657,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6207:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1660,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 1664,
                        "src": "6230:19:14",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1659,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6230:5:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6135:120:14"
                  },
                  "returnParameters": {
                    "id": 1663,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6273:0:14"
                  },
                  "scope": 1682,
                  "src": "6110:164:14",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1537
                  ],
                  "documentation": {
                    "id": 1665,
                    "nodeType": "StructuredDocumentation",
                    "src": "6280:1168:14",
                    "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": 1681,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1679,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7637:8:14"
                  },
                  "parameters": {
                    "id": 1678,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1667,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1681,
                        "src": "7493:12:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1666,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7493:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1669,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 1681,
                        "src": "7515:10:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1668,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7515:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1672,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 1681,
                        "src": "7535:22:14",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1670,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7535:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1671,
                          "nodeType": "ArrayTypeName",
                          "src": "7535:9:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1675,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 1681,
                        "src": "7567:25:14",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1673,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7567:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1674,
                          "nodeType": "ArrayTypeName",
                          "src": "7567:9:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1677,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 1681,
                        "src": "7602:19:14",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1676,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7602:5:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7483:144:14"
                  },
                  "returnParameters": {
                    "id": 1680,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7645:0:14"
                  },
                  "scope": 1682,
                  "src": "7453:193:14",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1683,
              "src": "1786:5862:14"
            }
          ],
          "src": "33:7616:14"
        },
        "id": 14
      },
      "contracts/token/ERC1155/interfaces/IERC1155InventoryCreator.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryCreator.sol",
          "exportedSymbols": {
            "IERC1155InventoryCreator": [
              1694
            ]
          },
          "id": 1695,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1684,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:15"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1685,
                "nodeType": "StructuredDocumentation",
                "src": "66:188:15",
                "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": 1694,
              "linearizedBaseContracts": [
                1694
              ],
              "name": "IERC1155InventoryCreator",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 1686,
                    "nodeType": "StructuredDocumentation",
                    "src": "296:347:15",
                    "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": 1693,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "creator",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1689,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1688,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1693,
                        "src": "665:20:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1687,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "665:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "664:22:15"
                  },
                  "returnParameters": {
                    "id": 1692,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1691,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1693,
                        "src": "710:7:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1690,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "710:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "709:9:15"
                  },
                  "scope": 1694,
                  "src": "648:71:15",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1695,
              "src": "255:466:15"
            }
          ],
          "src": "33:689:15"
        },
        "id": 15
      },
      "contracts/token/ERC1155/interfaces/IERC1155InventoryFunctions.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryFunctions.sol",
          "exportedSymbols": {
            "IERC1155InventoryFunctions": [
              1719
            ]
          },
          "id": 1720,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1696,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:16"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1697,
                "nodeType": "StructuredDocumentation",
                "src": "66:282:16",
                "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": 1719,
              "linearizedBaseContracts": [
                1719
              ],
              "name": "IERC1155InventoryFunctions",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "6352211e",
                  "id": 1704,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1700,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1699,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1704,
                        "src": "409:13:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1698,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "409:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "408:15:16"
                  },
                  "returnParameters": {
                    "id": 1703,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1702,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1704,
                        "src": "447:7:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1701,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "447:7:16",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "446:9:16"
                  },
                  "scope": 1719,
                  "src": "392:64:16",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "adebf6f2",
                  "id": 1711,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isFungible",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1707,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1706,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1711,
                        "src": "482:10:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1705,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "482:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "481:12:16"
                  },
                  "returnParameters": {
                    "id": 1710,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1709,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1711,
                        "src": "517:4:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1708,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "517:4:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "516:6:16"
                  },
                  "scope": 1719,
                  "src": "462:61:16",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "c7778baa",
                  "id": 1718,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "collectionOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1714,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1713,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1718,
                        "src": "551:13:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1712,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "551:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "550:15:16"
                  },
                  "returnParameters": {
                    "id": 1717,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1716,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1718,
                        "src": "589:7:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1715,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "589:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "588:9:16"
                  },
                  "scope": 1719,
                  "src": "529:69:16",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1720,
              "src": "349:251:16"
            }
          ],
          "src": "33:568:16"
        },
        "id": 16
      },
      "contracts/token/ERC1155/interfaces/IERC1155InventoryTotalSupply.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryTotalSupply.sol",
          "exportedSymbols": {
            "IERC1155InventoryTotalSupply": [
              1731
            ]
          },
          "id": 1732,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1721,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:17"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1722,
                "nodeType": "StructuredDocumentation",
                "src": "66:193:17",
                "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": 1731,
              "linearizedBaseContracts": [
                1731
              ],
              "name": "IERC1155InventoryTotalSupply",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 1723,
                    "nodeType": "StructuredDocumentation",
                    "src": "305:341:17",
                    "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": 1730,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1726,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1725,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1730,
                        "src": "672:10:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1724,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "672:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "671:12:17"
                  },
                  "returnParameters": {
                    "id": 1729,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1728,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1730,
                        "src": "707:7:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1727,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "707:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "706:9:17"
                  },
                  "scope": 1731,
                  "src": "651:65:17",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1732,
              "src": "260:458:17"
            }
          ],
          "src": "33:686:17"
        },
        "id": 17
      },
      "contracts/token/ERC1155/interfaces/IERC1155MetadataURI.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155MetadataURI.sol",
          "exportedSymbols": {
            "IERC1155MetadataURI": [
              1743
            ]
          },
          "id": 1744,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1733,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:18"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1734,
                "nodeType": "StructuredDocumentation",
                "src": "66:204:18",
                "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": 1743,
              "linearizedBaseContracts": [
                1743
              ],
              "name": "IERC1155MetadataURI",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 1735,
                    "nodeType": "StructuredDocumentation",
                    "src": "307:646:18",
                    "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": 1742,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "uri",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1738,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1737,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1742,
                        "src": "971:10:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1736,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "971:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "970:12:18"
                  },
                  "returnParameters": {
                    "id": 1741,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1740,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1742,
                        "src": "1006:13:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1739,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1006:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1005:15:18"
                  },
                  "scope": 1743,
                  "src": "958:63:18",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1744,
              "src": "271:752:18"
            }
          ],
          "src": "33:991:18"
        },
        "id": 18
      },
      "contracts/token/ERC1155/interfaces/IERC1155TokenReceiver.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155TokenReceiver.sol",
          "exportedSymbols": {
            "IERC1155TokenReceiver": [
              1781
            ]
          },
          "id": 1782,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1745,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:19"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1746,
                "nodeType": "StructuredDocumentation",
                "src": "66:279:19",
                "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": 1781,
              "linearizedBaseContracts": [
                1781
              ],
              "name": "IERC1155TokenReceiver",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 1747,
                    "nodeType": "StructuredDocumentation",
                    "src": "384:963:19",
                    "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": 1762,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155Received",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1758,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1749,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 1762,
                        "src": "1388:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1748,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1388:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1751,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1762,
                        "src": "1414:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1750,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1414:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1753,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1762,
                        "src": "1436:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1752,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1436:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1755,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 1762,
                        "src": "1456:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1754,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1456:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1757,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 1762,
                        "src": "1479:19:19",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1756,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1479:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1378:126:19"
                  },
                  "returnParameters": {
                    "id": 1761,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1760,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1762,
                        "src": "1523:6:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 1759,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1523:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1522:8:19"
                  },
                  "scope": 1781,
                  "src": "1352:179:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1763,
                    "nodeType": "StructuredDocumentation",
                    "src": "1537:1124:19",
                    "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": 1780,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155BatchReceived",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1776,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1765,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 1780,
                        "src": "2707:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1764,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2707:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1767,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1780,
                        "src": "2733:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1766,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2733:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1770,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 1780,
                        "src": "2755:22:19",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1768,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2755:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1769,
                          "nodeType": "ArrayTypeName",
                          "src": "2755:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1773,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 1780,
                        "src": "2787:25:19",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1771,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2787:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1772,
                          "nodeType": "ArrayTypeName",
                          "src": "2787:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1775,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 1780,
                        "src": "2822:19:19",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1774,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2822:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2697:150:19"
                  },
                  "returnParameters": {
                    "id": 1779,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1778,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1780,
                        "src": "2866:6:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 1777,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2866:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2865:8:19"
                  },
                  "scope": 1781,
                  "src": "2666:208:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1782,
              "src": "346:2530:19"
            }
          ],
          "src": "33:2844:19"
        },
        "id": 19
      },
      "contracts/token/ERC1155721/ERC1155721Inventory.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155721/ERC1155721Inventory.sol",
          "exportedSymbols": {
            "AddressIsContract": [
              672
            ],
            "ERC1155721Inventory": [
              4060
            ],
            "ERC1155InventoryBase": [
              1382
            ],
            "ERC1155InventoryIdentifiersLib": [
              1464
            ],
            "IERC1155721Inventory": [
              4851
            ],
            "IERC1155Inventory": [
              1682
            ],
            "IERC1155MetadataURI": [
              1743
            ],
            "IERC1155TokenReceiver": [
              1781
            ],
            "IERC165": [
              218
            ],
            "IERC721": [
              5685
            ],
            "IERC721BatchTransfer": [
              5700
            ],
            "IERC721Metadata": [
              5724
            ],
            "IERC721Receiver": [
              5742
            ]
          },
          "id": 4061,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1783,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:20"
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/types/AddressIsContract.sol",
              "id": 1785,
              "nodeType": "ImportDirective",
              "scope": 4061,
              "sourceUnit": 673,
              "src": "66:111:20",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1784,
                    "name": "AddressIsContract",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:17:20",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/ERC1155InventoryIdentifiersLib.sol",
              "file": "./../ERC1155/ERC1155InventoryIdentifiersLib.sol",
              "id": 1787,
              "nodeType": "ImportDirective",
              "scope": 4061,
              "sourceUnit": 1465,
              "src": "178:95:20",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1786,
                    "name": "ERC1155InventoryIdentifiersLib",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "186:30:20",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "id": 1789,
              "nodeType": "ImportDirective",
              "scope": 4061,
              "sourceUnit": 219,
              "src": "274:93:20",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1788,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "282:7:20",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721.sol",
              "file": "./../ERC721/interfaces/IERC721.sol",
              "id": 1791,
              "nodeType": "ImportDirective",
              "scope": 4061,
              "sourceUnit": 5686,
              "src": "368:59:20",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1790,
                    "name": "IERC721",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "376:7:20",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721Metadata.sol",
              "file": "./../ERC721/interfaces/IERC721Metadata.sol",
              "id": 1793,
              "nodeType": "ImportDirective",
              "scope": 4061,
              "sourceUnit": 5725,
              "src": "428:75:20",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1792,
                    "name": "IERC721Metadata",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "436:15:20",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721BatchTransfer.sol",
              "file": "./../ERC721/interfaces/IERC721BatchTransfer.sol",
              "id": 1795,
              "nodeType": "ImportDirective",
              "scope": 4061,
              "sourceUnit": 5701,
              "src": "504:85:20",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1794,
                    "name": "IERC721BatchTransfer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "512:20:20",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721Receiver.sol",
              "file": "./../ERC721/interfaces/IERC721Receiver.sol",
              "id": 1797,
              "nodeType": "ImportDirective",
              "scope": 4061,
              "sourceUnit": 5743,
              "src": "590:75:20",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1796,
                    "name": "IERC721Receiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "598:15:20",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155MetadataURI.sol",
              "file": "./../ERC1155/interfaces/IERC1155MetadataURI.sol",
              "id": 1799,
              "nodeType": "ImportDirective",
              "scope": 4061,
              "sourceUnit": 1744,
              "src": "666:84:20",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1798,
                    "name": "IERC1155MetadataURI",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "674:19:20",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155TokenReceiver.sol",
              "file": "./../ERC1155/interfaces/IERC1155TokenReceiver.sol",
              "id": 1801,
              "nodeType": "ImportDirective",
              "scope": 4061,
              "sourceUnit": 1782,
              "src": "751:88:20",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1800,
                    "name": "IERC1155TokenReceiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "759:21:20",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155Inventory.sol",
              "file": "./../ERC1155/interfaces/IERC1155Inventory.sol",
              "id": 1803,
              "nodeType": "ImportDirective",
              "scope": 4061,
              "sourceUnit": 1683,
              "src": "840:80:20",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1802,
                    "name": "IERC1155Inventory",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "848:17:20",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721Inventory.sol",
              "file": "./interfaces/IERC1155721Inventory.sol",
              "id": 1805,
              "nodeType": "ImportDirective",
              "scope": 4061,
              "sourceUnit": 4852,
              "src": "921:75:20",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1804,
                    "name": "IERC1155721Inventory",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "929:20:20",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/ERC1155InventoryBase.sol",
              "file": "./../ERC1155/ERC1155InventoryBase.sol",
              "id": 1807,
              "nodeType": "ImportDirective",
              "scope": 4061,
              "sourceUnit": 1383,
              "src": "997:75:20",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1806,
                    "name": "ERC1155InventoryBase",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "1005:20:20",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 1809,
                    "name": "IERC1155721Inventory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4851,
                    "src": "1342:20:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155721Inventory_$4851",
                      "typeString": "contract IERC1155721Inventory"
                    }
                  },
                  "id": 1810,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1342:20:20"
                },
                {
                  "baseName": {
                    "id": 1811,
                    "name": "IERC721Metadata",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5724,
                    "src": "1364:15:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC721Metadata_$5724",
                      "typeString": "contract IERC721Metadata"
                    }
                  },
                  "id": 1812,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1364:15:20"
                },
                {
                  "baseName": {
                    "id": 1813,
                    "name": "ERC1155InventoryBase",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1382,
                    "src": "1381:20:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155InventoryBase_$1382",
                      "typeString": "contract ERC1155InventoryBase"
                    }
                  },
                  "id": 1814,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1381:20:20"
                }
              ],
              "contractDependencies": [
                218,
                322,
                1382,
                1579,
                1682,
                1719,
                1731,
                1743,
                4851,
                5685,
                5700,
                5724
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 1808,
                "nodeType": "StructuredDocumentation",
                "src": "1074:226:20",
                "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": 4060,
              "linearizedBaseContracts": [
                4060,
                1382,
                1731,
                1743,
                5724,
                4851,
                5700,
                5685,
                1682,
                1719,
                1579,
                218,
                322
              ],
              "name": "ERC1155721Inventory",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 1817,
                  "libraryName": {
                    "id": 1815,
                    "name": "ERC1155InventoryIdentifiersLib",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1464,
                    "src": "1414:30:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155InventoryIdentifiersLib_$1464",
                      "typeString": "library ERC1155InventoryIdentifiersLib"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1408:49:20",
                  "typeName": {
                    "id": 1816,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1449:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 1820,
                  "libraryName": {
                    "id": 1818,
                    "name": "AddressIsContract",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 672,
                    "src": "1468:17:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AddressIsContract_$672",
                      "typeString": "library AddressIsContract"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1462:36:20",
                  "typeName": {
                    "id": 1819,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1490:7:20",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                {
                  "constant": true,
                  "id": 1825,
                  "mutability": "constant",
                  "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                  "nodeType": "VariableDeclaration",
                  "scope": 4060,
                  "src": "1504:63:20",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1821,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1504:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_rational_1461501637330902918203684832716283019655932542976_by_1",
                      "typeString": "int_const 1461...(41 digits omitted)...2976"
                    },
                    "id": 1824,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "hexValue": "31",
                      "id": 1822,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1559:1:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<<",
                    "rightExpression": {
                      "hexValue": "313630",
                      "id": 1823,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1564:3:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_160_by_1",
                        "typeString": "int_const 160"
                      },
                      "value": "160"
                    },
                    "src": "1559:8:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1461501637330902918203684832716283019655932542976_by_1",
                      "typeString": "int_const 1461...(41 digits omitted)...2976"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1827,
                  "mutability": "mutable",
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "scope": 4060,
                  "src": "1574:21:20",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1826,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1574:6:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1829,
                  "mutability": "mutable",
                  "name": "_symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 4060,
                  "src": "1601:23:20",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1828,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1601:6:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1833,
                  "mutability": "mutable",
                  "name": "_nftBalances",
                  "nodeType": "VariableDeclaration",
                  "scope": 4060,
                  "src": "1662:49:20",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 1832,
                    "keyType": {
                      "id": 1830,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1670:7:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1662:27:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 1831,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1681:7:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1837,
                  "mutability": "mutable",
                  "name": "_nftApprovals",
                  "nodeType": "VariableDeclaration",
                  "scope": 4060,
                  "src": "1747:50:20",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                    "typeString": "mapping(uint256 => address)"
                  },
                  "typeName": {
                    "id": 1836,
                    "keyType": {
                      "id": 1834,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1755:7:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1747:27:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                      "typeString": "mapping(uint256 => address)"
                    },
                    "valueType": {
                      "id": 1835,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1766:7:20",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1857,
                    "nodeType": "Block",
                    "src": "1963:57:20",
                    "statements": [
                      {
                        "expression": {
                          "id": 1851,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1849,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1827,
                            "src": "1973:5:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1850,
                            "name": "name_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1839,
                            "src": "1981:5:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1973:13:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 1852,
                        "nodeType": "ExpressionStatement",
                        "src": "1973:13:20"
                      },
                      {
                        "expression": {
                          "id": 1855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1853,
                            "name": "_symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1829,
                            "src": "1996:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1854,
                            "name": "symbol_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1841,
                            "src": "2006:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1996:17:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 1856,
                        "nodeType": "ExpressionStatement",
                        "src": "1996:17:20"
                      }
                    ]
                  },
                  "id": 1858,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 1846,
                          "name": "collectionMaskLength",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1843,
                          "src": "1941:20:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1847,
                      "modifierName": {
                        "id": 1845,
                        "name": "ERC1155InventoryBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1382,
                        "src": "1920:20:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC1155InventoryBase_$1382_$",
                          "typeString": "type(contract ERC1155InventoryBase)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1920:42:20"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1844,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1839,
                        "mutability": "mutable",
                        "name": "name_",
                        "nodeType": "VariableDeclaration",
                        "scope": 1858,
                        "src": "1825:19:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1838,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1825:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1841,
                        "mutability": "mutable",
                        "name": "symbol_",
                        "nodeType": "VariableDeclaration",
                        "scope": 1858,
                        "src": "1854:21:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1840,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1854:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1843,
                        "mutability": "mutable",
                        "name": "collectionMaskLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 1858,
                        "src": "1885:28:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1842,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1885:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1815:104:20"
                  },
                  "returnParameters": {
                    "id": 1848,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1963:0:20"
                  },
                  "scope": 4060,
                  "src": "1804:216:20",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    953
                  ],
                  "body": {
                    "id": 1893,
                    "nodeType": "Block",
                    "src": "2274:261:20",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 1886,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1879,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 1872,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1867,
                                  "name": "interfaceId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1861,
                                  "src": "2303:11:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 1869,
                                        "name": "IERC721",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5685,
                                        "src": "2323:7:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC721_$5685_$",
                                          "typeString": "type(contract IERC721)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_type$_t_contract$_IERC721_$5685_$",
                                          "typeString": "type(contract IERC721)"
                                        }
                                      ],
                                      "id": 1868,
                                      "name": "type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -27,
                                      "src": "2318:4:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 1870,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2318:13:20",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721_$5685",
                                      "typeString": "type(contract IERC721)"
                                    }
                                  },
                                  "id": 1871,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "interfaceId",
                                  "nodeType": "MemberAccess",
                                  "src": "2318:25:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "2303:40:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 1878,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1873,
                                  "name": "interfaceId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1861,
                                  "src": "2359:11:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 1875,
                                        "name": "IERC721Metadata",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5724,
                                        "src": "2379:15:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$5724_$",
                                          "typeString": "type(contract IERC721Metadata)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$5724_$",
                                          "typeString": "type(contract IERC721Metadata)"
                                        }
                                      ],
                                      "id": 1874,
                                      "name": "type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -27,
                                      "src": "2374:4:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 1876,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2374:21:20",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Metadata_$5724",
                                      "typeString": "type(contract IERC721Metadata)"
                                    }
                                  },
                                  "id": 1877,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "interfaceId",
                                  "nodeType": "MemberAccess",
                                  "src": "2374:33:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "2359:48:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2303:104:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 1885,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1880,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1861,
                                "src": "2423:11:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 1882,
                                      "name": "IERC721BatchTransfer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5700,
                                      "src": "2443:20:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721BatchTransfer_$5700_$",
                                        "typeString": "type(contract IERC721BatchTransfer)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721BatchTransfer_$5700_$",
                                        "typeString": "type(contract IERC721BatchTransfer)"
                                      }
                                    ],
                                    "id": 1881,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "2438:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 1883,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2438:26:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721BatchTransfer_$5700",
                                    "typeString": "type(contract IERC721BatchTransfer)"
                                  }
                                },
                                "id": 1884,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "2438:38:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "2423:53:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "2303:173:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 1889,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1861,
                                "src": "2516:11:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 1887,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "2492:5:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_super$_ERC1155721Inventory_$4060",
                                  "typeString": "contract super ERC1155721Inventory"
                                }
                              },
                              "id": 1888,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 953,
                              "src": "2492:23:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 1890,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2492:36:20",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2303:225:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1866,
                        "id": 1892,
                        "nodeType": "Return",
                        "src": "2284:244:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1859,
                    "nodeType": "StructuredDocumentation",
                    "src": "2155:23:20",
                    "text": "@inheritdoc IERC165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 1894,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1863,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2250:8:20"
                  },
                  "parameters": {
                    "id": 1862,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1861,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1894,
                        "src": "2210:18:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 1860,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2210:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2209:20:20"
                  },
                  "returnParameters": {
                    "id": 1866,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1865,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1894,
                        "src": "2268:4:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1864,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2268:4:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2267:6:20"
                  },
                  "scope": 4060,
                  "src": "2183:352:20",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    5709
                  ],
                  "body": {
                    "id": 1903,
                    "nodeType": "Block",
                    "src": "2775:29:20",
                    "statements": [
                      {
                        "expression": {
                          "id": 1901,
                          "name": "_name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1827,
                          "src": "2792:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 1900,
                        "id": 1902,
                        "nodeType": "Return",
                        "src": "2785:12:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1895,
                    "nodeType": "StructuredDocumentation",
                    "src": "2670:31:20",
                    "text": "@inheritdoc IERC721Metadata"
                  },
                  "functionSelector": "06fdde03",
                  "id": 1904,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1897,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2742:8:20"
                  },
                  "parameters": {
                    "id": 1896,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2719:2:20"
                  },
                  "returnParameters": {
                    "id": 1900,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1899,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1904,
                        "src": "2760:13:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1898,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2760:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2759:15:20"
                  },
                  "scope": 4060,
                  "src": "2706:98:20",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    5715
                  ],
                  "body": {
                    "id": 1913,
                    "nodeType": "Block",
                    "src": "2917:31:20",
                    "statements": [
                      {
                        "expression": {
                          "id": 1911,
                          "name": "_symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1829,
                          "src": "2934:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 1910,
                        "id": 1912,
                        "nodeType": "Return",
                        "src": "2927:14:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1905,
                    "nodeType": "StructuredDocumentation",
                    "src": "2810:31:20",
                    "text": "@inheritdoc IERC721Metadata"
                  },
                  "functionSelector": "95d89b41",
                  "id": 1914,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1907,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2884:8:20"
                  },
                  "parameters": {
                    "id": 1906,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2861:2:20"
                  },
                  "returnParameters": {
                    "id": 1910,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1909,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1914,
                        "src": "2902:13:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1908,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2902:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2901:15:20"
                  },
                  "scope": 4060,
                  "src": "2846:102:20",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    5723
                  ],
                  "body": {
                    "id": 1945,
                    "nodeType": "Block",
                    "src": "3078:130:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              "id": 1937,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "baseExpression": {
                                          "id": 1928,
                                          "name": "_owners",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 883,
                                          "src": "3112:7:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                            "typeString": "mapping(uint256 => uint256)"
                                          }
                                        },
                                        "id": 1930,
                                        "indexExpression": {
                                          "id": 1929,
                                          "name": "nftId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1917,
                                          "src": "3120:5:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "3112:14:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 1927,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3104:7:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint160_$",
                                        "typeString": "type(uint160)"
                                      },
                                      "typeName": {
                                        "id": 1926,
                                        "name": "uint160",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3104:7:20",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1931,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3104:23:20",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "id": 1925,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3096:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1924,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3096:7:20",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1932,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3096:32:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1935,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3140: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": 1934,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3132:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1933,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3132:7:20",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1936,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3132:10:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3096:46:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d6578697374696e67204e4654",
                              "id": 1938,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3144:29:20",
                              "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": 1923,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3088:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1939,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3088:86:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1940,
                        "nodeType": "ExpressionStatement",
                        "src": "3088:86:20"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1942,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1917,
                              "src": "3195:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1941,
                            "name": "uri",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1955,
                            "src": "3191:3:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$",
                              "typeString": "function (uint256) view returns (string memory)"
                            }
                          },
                          "id": 1943,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3191:10:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 1922,
                        "id": 1944,
                        "nodeType": "Return",
                        "src": "3184:17:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1915,
                    "nodeType": "StructuredDocumentation",
                    "src": "2954:31:20",
                    "text": "@inheritdoc IERC721Metadata"
                  },
                  "functionSelector": "c87b56dd",
                  "id": 1946,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenURI",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1919,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3045:8:20"
                  },
                  "parameters": {
                    "id": 1918,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1917,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 1946,
                        "src": "3008:13:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1916,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3008:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3007:15:20"
                  },
                  "returnParameters": {
                    "id": 1922,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1921,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1946,
                        "src": "3063:13:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1920,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3063:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3062:15:20"
                  },
                  "scope": 4060,
                  "src": "2990:218:20",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1742
                  ],
                  "documentation": {
                    "id": 1947,
                    "nodeType": "StructuredDocumentation",
                    "src": "3343:35:20",
                    "text": "@inheritdoc IERC1155MetadataURI"
                  },
                  "functionSelector": "0e89341c",
                  "id": 1955,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "uri",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1951,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3425:8:20"
                  },
                  "parameters": {
                    "id": 1950,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1949,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1955,
                        "src": "3396:7:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1948,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3396:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3395:9:20"
                  },
                  "returnParameters": {
                    "id": 1954,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1953,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1955,
                        "src": "3443:13:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1952,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3443:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3442:15:20"
                  },
                  "scope": 4060,
                  "src": "3383:75:20",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    5610
                  ],
                  "body": {
                    "id": 1978,
                    "nodeType": "Block",
                    "src": "3709:118:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1970,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1965,
                                "name": "tokenOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1958,
                                "src": "3727:10:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1968,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3749: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": 1967,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3741:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1966,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3741:7:20",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1969,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3741:10:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3727:24:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207a65726f2061646472657373",
                              "id": 1971,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3753:25:20",
                              "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": 1964,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3719:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1972,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3719:60:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1973,
                        "nodeType": "ExpressionStatement",
                        "src": "3719:60:20"
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 1974,
                            "name": "_nftBalances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1833,
                            "src": "3796:12:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 1976,
                          "indexExpression": {
                            "id": 1975,
                            "name": "tokenOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1958,
                            "src": "3809:10:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3796:24:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 1963,
                        "id": 1977,
                        "nodeType": "Return",
                        "src": "3789:31:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1956,
                    "nodeType": "StructuredDocumentation",
                    "src": "3593:23:20",
                    "text": "@inheritdoc IERC721"
                  },
                  "functionSelector": "70a08231",
                  "id": 1979,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1960,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3682:8:20"
                  },
                  "parameters": {
                    "id": 1959,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1958,
                        "mutability": "mutable",
                        "name": "tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 1979,
                        "src": "3640:18:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1957,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3640:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3639:20:20"
                  },
                  "returnParameters": {
                    "id": 1963,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1962,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1979,
                        "src": "3700:7:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1961,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3700:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3699:9:20"
                  },
                  "scope": 4060,
                  "src": "3621:206:20",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    5626
                  ],
                  "body": {
                    "id": 2081,
                    "nodeType": "Block",
                    "src": "3931:925:20",
                    "statements": [
                      {
                        "assignments": [
                          1989
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1989,
                            "mutability": "mutable",
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 2081,
                            "src": "3941:13:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1988,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3941:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1993,
                        "initialValue": {
                          "baseExpression": {
                            "id": 1990,
                            "name": "_owners",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 883,
                            "src": "3957:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 1992,
                          "indexExpression": {
                            "id": 1991,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1984,
                            "src": "3965:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3957:16:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3941:32:20"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1997,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1995,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1989,
                                "src": "3991:5:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 1996,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4000:1:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3991:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d6578697374696e67204e4654",
                              "id": 1998,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4003:29:20",
                              "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": 1994,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3983:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1999,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3983:50:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2000,
                        "nodeType": "ExpressionStatement",
                        "src": "3983:50:20"
                      },
                      {
                        "assignments": [
                          2002
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2002,
                            "mutability": "mutable",
                            "name": "ownerAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 2081,
                            "src": "4043:20:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2001,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4043:7:20",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2010,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 2007,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1989,
                                  "src": "4082:5:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 2006,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4074:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint160_$",
                                  "typeString": "type(uint160)"
                                },
                                "typeName": {
                                  "id": 2005,
                                  "name": "uint160",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4074:7:20",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2008,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4074:14:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            ],
                            "id": 2004,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4066:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 2003,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4066:7:20",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 2009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4066:23:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4043:46:20"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2014,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2012,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1982,
                                "src": "4107:2:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 2013,
                                "name": "ownerAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2002,
                                "src": "4113:12:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4107:18:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a2073656c662d617070726f76616c",
                              "id": 2015,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4127:26:20",
                              "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": 2011,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4099:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2016,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4099:55:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2017,
                        "nodeType": "ExpressionStatement",
                        "src": "4099:55:20"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 2020,
                                  "name": "ownerAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2002,
                                  "src": "4186:12:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 2021,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 312,
                                    "src": "4200:10:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                      "typeString": "function () view returns (address payable)"
                                    }
                                  },
                                  "id": 2022,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4200:12:20",
                                  "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": 2019,
                                "name": "_isOperatable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1315,
                                "src": "4172:13:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address,address) view returns (bool)"
                                }
                              },
                              "id": 2023,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4172:41:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d617070726f7665642073656e646572",
                              "id": 2024,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4215: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": 2018,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4164:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4164:84:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2026,
                        "nodeType": "ExpressionStatement",
                        "src": "4164:84:20"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2032,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2027,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1982,
                            "src": "4262:2:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 2030,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4276: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": 2029,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4268:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2028,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4268:7:20",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2031,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4268:10:20",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "4262:16:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2073,
                          "nodeType": "Block",
                          "src": "4488:312:20",
                          "statements": [
                            {
                              "assignments": [
                                2051
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2051,
                                  "mutability": "mutable",
                                  "name": "ownerWithApprovalBit",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2073,
                                  "src": "4502:28:20",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2050,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4502:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2055,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2054,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2052,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1989,
                                  "src": "4533:5:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "|",
                                "rightExpression": {
                                  "id": 2053,
                                  "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1825,
                                  "src": "4541:26:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4533:34:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4502:65:20"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2058,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2056,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1989,
                                  "src": "4585:5:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "id": 2057,
                                  "name": "ownerWithApprovalBit",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2051,
                                  "src": "4594:20:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4585:29:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2066,
                              "nodeType": "IfStatement",
                              "src": "4581:168:20",
                              "trueBody": {
                                "id": 2065,
                                "nodeType": "Block",
                                "src": "4616:133:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 2063,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 2059,
                                          "name": "_owners",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 883,
                                          "src": "4695:7:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                            "typeString": "mapping(uint256 => uint256)"
                                          }
                                        },
                                        "id": 2061,
                                        "indexExpression": {
                                          "id": 2060,
                                          "name": "tokenId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1984,
                                          "src": "4703:7:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "4695:16:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 2062,
                                        "name": "ownerWithApprovalBit",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2051,
                                        "src": "4714:20:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4695:39:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2064,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4695:39:20"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 2071,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 2067,
                                    "name": "_nftApprovals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1837,
                                    "src": "4762:13:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                      "typeString": "mapping(uint256 => address)"
                                    }
                                  },
                                  "id": 2069,
                                  "indexExpression": {
                                    "id": 2068,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1984,
                                    "src": "4776:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4762:22:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 2070,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1982,
                                  "src": "4787:2:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4762:27:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 2072,
                              "nodeType": "ExpressionStatement",
                              "src": "4762:27:20"
                            }
                          ]
                        },
                        "id": 2074,
                        "nodeType": "IfStatement",
                        "src": "4258:542:20",
                        "trueBody": {
                          "id": 2049,
                          "nodeType": "Block",
                          "src": "4280:202:20",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2037,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2035,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 2033,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1989,
                                    "src": "4298:5:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "id": 2034,
                                    "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1825,
                                    "src": "4306:26:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4298:34:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 2036,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4336:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "4298:39:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2048,
                              "nodeType": "IfStatement",
                              "src": "4294:178:20",
                              "trueBody": {
                                "id": 2047,
                                "nodeType": "Block",
                                "src": "4339:133:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 2045,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 2038,
                                          "name": "_owners",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 883,
                                          "src": "4417:7:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                            "typeString": "mapping(uint256 => uint256)"
                                          }
                                        },
                                        "id": 2040,
                                        "indexExpression": {
                                          "id": 2039,
                                          "name": "tokenId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1984,
                                          "src": "4425:7:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "4417:16:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 2043,
                                            "name": "ownerAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2002,
                                            "src": "4444:12:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 2042,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "4436:7:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": {
                                            "id": 2041,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "4436:7:20",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 2044,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4436:21:20",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4417:40:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2046,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4417:40:20"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 2076,
                              "name": "ownerAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2002,
                              "src": "4823:12:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2077,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1982,
                              "src": "4837:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2078,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1984,
                              "src": "4841:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2075,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4736,
                            "src": "4814:8:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 2079,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4814:35:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2080,
                        "nodeType": "EmitStatement",
                        "src": "4809:40:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1980,
                    "nodeType": "StructuredDocumentation",
                    "src": "3833:23:20",
                    "text": "@inheritdoc IERC721"
                  },
                  "functionSelector": "095ea7b3",
                  "id": 2082,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1986,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3922:8:20"
                  },
                  "parameters": {
                    "id": 1985,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1982,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2082,
                        "src": "3878:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1981,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3878:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1984,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 2082,
                        "src": "3890:15:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1983,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3890:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3877:29:20"
                  },
                  "returnParameters": {
                    "id": 1987,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3931:0:20"
                  },
                  "scope": 4060,
                  "src": "3861:995:20",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    5634
                  ],
                  "body": {
                    "id": 2130,
                    "nodeType": "Block",
                    "src": "4975:292:20",
                    "statements": [
                      {
                        "assignments": [
                          2092
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2092,
                            "mutability": "mutable",
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 2130,
                            "src": "4985:13:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2091,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4985:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2096,
                        "initialValue": {
                          "baseExpression": {
                            "id": 2093,
                            "name": "_owners",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 883,
                            "src": "5001:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 2095,
                          "indexExpression": {
                            "id": 2094,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2085,
                            "src": "5009:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5001:16:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4985:32:20"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              "id": 2109,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 2102,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2092,
                                        "src": "5051:5:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 2101,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5043:7:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint160_$",
                                        "typeString": "type(uint160)"
                                      },
                                      "typeName": {
                                        "id": 2100,
                                        "name": "uint160",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5043:7:20",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 2103,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5043:14:20",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "id": 2099,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5035:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2098,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5035:7:20",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2104,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5035:23:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 2107,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5070: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": 2106,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5062:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2105,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5062:7:20",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2108,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5062:10:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "5035:37:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d6578697374696e67204e4654",
                              "id": 2110,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5074:29:20",
                              "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": 2097,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5027:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2111,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5027:77:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2112,
                        "nodeType": "ExpressionStatement",
                        "src": "5027:77:20"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2117,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2115,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 2113,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2092,
                              "src": "5118:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "id": 2114,
                              "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1825,
                              "src": "5126:26:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5118:34:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2116,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5156:1:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5118:39:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2128,
                          "nodeType": "Block",
                          "src": "5219:42:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 2125,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5248: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": 2124,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5240:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2123,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5240:7:20",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2126,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5240:10:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "functionReturnParameters": 2090,
                              "id": 2127,
                              "nodeType": "Return",
                              "src": "5233:17:20"
                            }
                          ]
                        },
                        "id": 2129,
                        "nodeType": "IfStatement",
                        "src": "5114:147:20",
                        "trueBody": {
                          "id": 2122,
                          "nodeType": "Block",
                          "src": "5159:54:20",
                          "statements": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 2118,
                                  "name": "_nftApprovals",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1837,
                                  "src": "5180:13:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                    "typeString": "mapping(uint256 => address)"
                                  }
                                },
                                "id": 2120,
                                "indexExpression": {
                                  "id": 2119,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2085,
                                  "src": "5194:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5180:22:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "functionReturnParameters": 2090,
                              "id": 2121,
                              "nodeType": "Return",
                              "src": "5173:29:20"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2083,
                    "nodeType": "StructuredDocumentation",
                    "src": "4862:23:20",
                    "text": "@inheritdoc IERC721"
                  },
                  "functionSelector": "081812fc",
                  "id": 2131,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getApproved",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2087,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4948:8:20"
                  },
                  "parameters": {
                    "id": 2086,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2085,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 2131,
                        "src": "4911:15:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2084,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4911:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4910:17:20"
                  },
                  "returnParameters": {
                    "id": 2090,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2089,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2131,
                        "src": "4966:7:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2088,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4966:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4965:9:20"
                  },
                  "scope": 4060,
                  "src": "4890:377:20",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4747
                  ],
                  "body": {
                    "id": 2150,
                    "nodeType": "Block",
                    "src": "5431:151:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2143,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2134,
                              "src": "5468:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2144,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2136,
                              "src": "5486:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2145,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2138,
                              "src": "5502:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 2146,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5521:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 2147,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5560:5:20",
                              "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": 2142,
                            "name": "_transferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2649,
                            "src": "5441:13:20",
                            "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": 2148,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5441:134:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2149,
                        "nodeType": "ExpressionStatement",
                        "src": "5441:134:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2132,
                    "nodeType": "StructuredDocumentation",
                    "src": "5273:36:20",
                    "text": "@inheritdoc IERC1155721Inventory"
                  },
                  "functionSelector": "23b872dd",
                  "id": 2151,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2140,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5422:8:20"
                  },
                  "parameters": {
                    "id": 2139,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2134,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2151,
                        "src": "5345:12:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2133,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5345:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2136,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2151,
                        "src": "5367:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2135,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5367:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2138,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 2151,
                        "src": "5387:13:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2137,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5387:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5335:71:20"
                  },
                  "returnParameters": {
                    "id": 2141,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5431:0:20"
                  },
                  "scope": 4060,
                  "src": "5314:268:20",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4758
                  ],
                  "body": {
                    "id": 2170,
                    "nodeType": "Block",
                    "src": "5750:150:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2163,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2154,
                              "src": "5787:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2164,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2156,
                              "src": "5805:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2165,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2158,
                              "src": "5821:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 2166,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5840:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            {
                              "hexValue": "74727565",
                              "id": 2167,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5879:4:20",
                              "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": 2162,
                            "name": "_transferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2649,
                            "src": "5760:13:20",
                            "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": 2168,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5760:133:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2169,
                        "nodeType": "ExpressionStatement",
                        "src": "5760:133:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2152,
                    "nodeType": "StructuredDocumentation",
                    "src": "5588:36:20",
                    "text": "@inheritdoc IERC1155721Inventory"
                  },
                  "functionSelector": "42842e0e",
                  "id": 2171,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2160,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5741:8:20"
                  },
                  "parameters": {
                    "id": 2159,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2154,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2171,
                        "src": "5664:12:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2153,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5664:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2156,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2171,
                        "src": "5686:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2155,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5686:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2158,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 2171,
                        "src": "5706:13:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2157,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5706:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5654:71:20"
                  },
                  "returnParameters": {
                    "id": 2161,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5750:0:20"
                  },
                  "scope": 4060,
                  "src": "5629:271:20",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4771
                  ],
                  "body": {
                    "id": 2192,
                    "nodeType": "Block",
                    "src": "6095:152:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2185,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2174,
                              "src": "6132:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2186,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2176,
                              "src": "6150:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2187,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2178,
                              "src": "6166:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 2188,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2180,
                              "src": "6185:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 2189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6226:4:20",
                              "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": 2184,
                            "name": "_transferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2649,
                            "src": "6105:13:20",
                            "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": 2190,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6105:135:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2191,
                        "nodeType": "ExpressionStatement",
                        "src": "6105:135:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2172,
                    "nodeType": "StructuredDocumentation",
                    "src": "5906:36:20",
                    "text": "@inheritdoc IERC1155721Inventory"
                  },
                  "functionSelector": "b88d4fde",
                  "id": 2193,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2182,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6086:8:20"
                  },
                  "parameters": {
                    "id": 2181,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2174,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2193,
                        "src": "5982:12:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2173,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5982:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2176,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2193,
                        "src": "6004:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2175,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6004:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2178,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 2193,
                        "src": "6024:13:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2177,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6024:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2180,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 2193,
                        "src": "6047:17:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2179,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6047:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5972:98:20"
                  },
                  "returnParameters": {
                    "id": 2183,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6095:0:20"
                  },
                  "scope": 4060,
                  "src": "5947:300:20",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4783
                  ],
                  "body": {
                    "id": 2376,
                    "nodeType": "Block",
                    "src": "6426:1557:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2211,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2206,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2198,
                                "src": "6444:2:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 2209,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6458: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": 2208,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6450:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2207,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6450:7:20",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2210,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6450:10:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6444:16:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207472616e7366657220746f207a65726f",
                              "id": 2212,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6462:29:20",
                              "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": 2205,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6436:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2213,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6436:56:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2214,
                        "nodeType": "ExpressionStatement",
                        "src": "6436:56:20"
                      },
                      {
                        "assignments": [
                          2216
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2216,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 2376,
                            "src": "6502:14:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2215,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6502:7:20",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2219,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2217,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "6519:10:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 2218,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6519:12:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6502:29:20"
                      },
                      {
                        "assignments": [
                          2221
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2221,
                            "mutability": "mutable",
                            "name": "operatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 2376,
                            "src": "6541:15:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2220,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "6541:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2226,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2223,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2196,
                              "src": "6573:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2224,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2216,
                              "src": "6579:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2222,
                            "name": "_isOperatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1315,
                            "src": "6559:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 2225,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6559:27:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6541:45:20"
                      },
                      {
                        "assignments": [
                          2228
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2228,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 2376,
                            "src": "6597:14:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2227,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6597:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2231,
                        "initialValue": {
                          "expression": {
                            "id": 2229,
                            "name": "nftIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2201,
                            "src": "6614:6:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 2230,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "6614:13:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6597:30:20"
                      },
                      {
                        "assignments": [
                          2236
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2236,
                            "mutability": "mutable",
                            "name": "values",
                            "nodeType": "VariableDeclaration",
                            "scope": 2376,
                            "src": "6637:23:20",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 2234,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6637:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2235,
                              "nodeType": "ArrayTypeName",
                              "src": "6637:9:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2242,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2240,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2228,
                              "src": "6677:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2239,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "6663: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": 2237,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6667:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2238,
                              "nodeType": "ArrayTypeName",
                              "src": "6667:9:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 2241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6663:21:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6637:47:20"
                      },
                      {
                        "assignments": [
                          2244
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2244,
                            "mutability": "mutable",
                            "name": "nfCollectionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 2376,
                            "src": "6695:22:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2243,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6695:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2245,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6695:22:20"
                      },
                      {
                        "assignments": [
                          2247
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2247,
                            "mutability": "mutable",
                            "name": "nfCollectionCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 2376,
                            "src": "6727:25:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2246,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6727:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2248,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6727:25:20"
                      },
                      {
                        "body": {
                          "id": 2330,
                          "nodeType": "Block",
                          "src": "6796:778:20",
                          "statements": [
                            {
                              "assignments": [
                                2259
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2259,
                                  "mutability": "mutable",
                                  "name": "nftId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2330,
                                  "src": "6810:13:20",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2258,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6810:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2263,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 2260,
                                  "name": "nftIds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2201,
                                  "src": "6826:6:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 2262,
                                "indexExpression": {
                                  "id": 2261,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2250,
                                  "src": "6833:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6826:9:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6810:25:20"
                            },
                            {
                              "expression": {
                                "id": 2268,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 2264,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2236,
                                    "src": "6849:6:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 2266,
                                  "indexExpression": {
                                    "id": 2265,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2250,
                                    "src": "6856:1:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "6849:9:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 2267,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6861:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "6849:13:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2269,
                              "nodeType": "ExpressionStatement",
                              "src": "6849:13:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2271,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2196,
                                    "src": "6889:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2272,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2198,
                                    "src": "6895:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2273,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2259,
                                    "src": "6899:5:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "hexValue": "31",
                                    "id": 2274,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6906:1:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  {
                                    "id": 2275,
                                    "name": "operatable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2221,
                                    "src": "6909:10:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "74727565",
                                    "id": 2276,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6921:4:20",
                                    "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": 2270,
                                  "name": "_transferNFT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3926,
                                  "src": "6876:12:20",
                                  "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": 2277,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6876:50:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2278,
                              "nodeType": "ExpressionStatement",
                              "src": "6876:50:20"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 2280,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2196,
                                    "src": "6954:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2281,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2198,
                                    "src": "6960:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2282,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2259,
                                    "src": "6964:5:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2279,
                                  "name": "Transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4728,
                                  "src": "6945:8:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 2283,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6945:25:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2284,
                              "nodeType": "EmitStatement",
                              "src": "6940:30:20"
                            },
                            {
                              "assignments": [
                                2286
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2286,
                                  "mutability": "mutable",
                                  "name": "nextCollectionId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2330,
                                  "src": "6984:24:20",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2285,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6984:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2291,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 2289,
                                    "name": "_collectionMaskLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 854,
                                    "src": "7042:21:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 2287,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2259,
                                    "src": "7011:5:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2288,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getNonFungibleCollection",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1445,
                                  "src": "7011: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": 2290,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7011:53:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6984:80:20"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2294,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2292,
                                  "name": "nfCollectionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2244,
                                  "src": "7082:14:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 2293,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7100:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7082:19:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 2328,
                                "nodeType": "Block",
                                "src": "7214:350:20",
                                "statements": [
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 2306,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 2304,
                                        "name": "nextCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2286,
                                        "src": "7236:16:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "id": 2305,
                                        "name": "nfCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2244,
                                        "src": "7256:14:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7236:34:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 2326,
                                      "nodeType": "Block",
                                      "src": "7490:60:20",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 2324,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": true,
                                            "src": "7512:19:20",
                                            "subExpression": {
                                              "id": 2323,
                                              "name": "nfCollectionCount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2247,
                                              "src": "7514:17:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 2325,
                                          "nodeType": "ExpressionStatement",
                                          "src": "7512:19:20"
                                        }
                                      ]
                                    },
                                    "id": 2327,
                                    "nodeType": "IfStatement",
                                    "src": "7232:318:20",
                                    "trueBody": {
                                      "id": 2322,
                                      "nodeType": "Block",
                                      "src": "7272:212:20",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "id": 2308,
                                                "name": "from",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2196,
                                                "src": "7323:4:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "id": 2309,
                                                "name": "to",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2198,
                                                "src": "7329:2:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "id": 2310,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2244,
                                                "src": "7333:14:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "id": 2311,
                                                "name": "nfCollectionCount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2247,
                                                "src": "7349:17:20",
                                                "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": 2307,
                                              "name": "_transferNFTUpdateCollection",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3986,
                                              "src": "7294:28:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,uint256,uint256)"
                                              }
                                            },
                                            "id": 2312,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "7294:73:20",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 2313,
                                          "nodeType": "ExpressionStatement",
                                          "src": "7294:73:20"
                                        },
                                        {
                                          "expression": {
                                            "id": 2316,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 2314,
                                              "name": "nfCollectionId",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2244,
                                              "src": "7389:14:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "id": 2315,
                                              "name": "nextCollectionId",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2286,
                                              "src": "7406:16:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "7389:33:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 2317,
                                          "nodeType": "ExpressionStatement",
                                          "src": "7389:33:20"
                                        },
                                        {
                                          "expression": {
                                            "id": 2320,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 2318,
                                              "name": "nfCollectionCount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2247,
                                              "src": "7444:17:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "hexValue": "31",
                                              "id": 2319,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "7464:1:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "src": "7444:21:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 2321,
                                          "nodeType": "ExpressionStatement",
                                          "src": "7444:21:20"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "id": 2329,
                              "nodeType": "IfStatement",
                              "src": "7078:486:20",
                              "trueBody": {
                                "id": 2303,
                                "nodeType": "Block",
                                "src": "7103:105:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 2297,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 2295,
                                        "name": "nfCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2244,
                                        "src": "7121:14:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 2296,
                                        "name": "nextCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2286,
                                        "src": "7138:16:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7121:33:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2298,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7121:33:20"
                                  },
                                  {
                                    "expression": {
                                      "id": 2301,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 2299,
                                        "name": "nfCollectionCount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2247,
                                        "src": "7172:17:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "hexValue": "31",
                                        "id": 2300,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7192:1:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "7172:21:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2302,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7172:21:20"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2254,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2252,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2250,
                            "src": "6778:1:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 2253,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2228,
                            "src": "6783:6:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6778:11:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2331,
                        "initializationExpression": {
                          "assignments": [
                            2250
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2250,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 2331,
                              "src": "6767:9:20",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2249,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6767:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 2251,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "6767:9:20"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 2256,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "6791:3:20",
                            "subExpression": {
                              "id": 2255,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2250,
                              "src": "6793:1:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2257,
                          "nodeType": "ExpressionStatement",
                          "src": "6791:3:20"
                        },
                        "nodeType": "ForStatement",
                        "src": "6762:812:20"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2334,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2332,
                            "name": "nfCollectionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2244,
                            "src": "7588:14:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2333,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7606:1:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7588:19:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2349,
                        "nodeType": "IfStatement",
                        "src": "7584:181:20",
                        "trueBody": {
                          "id": 2348,
                          "nodeType": "Block",
                          "src": "7609:156:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2336,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2196,
                                    "src": "7652:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2337,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2198,
                                    "src": "7658:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2338,
                                    "name": "nfCollectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2244,
                                    "src": "7662:14:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 2339,
                                    "name": "nfCollectionCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2247,
                                    "src": "7678:17:20",
                                    "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": 2335,
                                  "name": "_transferNFTUpdateCollection",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3986,
                                  "src": "7623:28:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256)"
                                  }
                                },
                                "id": 2340,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7623:73:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2341,
                              "nodeType": "ExpressionStatement",
                              "src": "7623:73:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2343,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2196,
                                    "src": "7737:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2344,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2198,
                                    "src": "7743:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2345,
                                    "name": "length",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2228,
                                    "src": "7747:6:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2342,
                                  "name": "_transferNFTUpdateBalances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3953,
                                  "src": "7710:26:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 2346,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7710:44:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2347,
                              "nodeType": "ExpressionStatement",
                              "src": "7710:44:20"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 2351,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "7794:10:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 2352,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7794:12:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 2353,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2196,
                              "src": "7808:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2354,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2198,
                              "src": "7814:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2355,
                              "name": "nftIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2201,
                              "src": "7818:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 2356,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2236,
                              "src": "7826:6:20",
                              "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": 2350,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1493,
                            "src": "7780: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": 2357,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7780:53:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2358,
                        "nodeType": "EmitStatement",
                        "src": "7775:58:20"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 2359,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2198,
                                "src": "7847:2:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 2360,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isContract",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 671,
                              "src": "7847:13:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                                "typeString": "function (address) view returns (bool)"
                              }
                            },
                            "id": 2361,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7847:15:20",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 2363,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2198,
                                "src": "7890:2:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 2362,
                              "name": "_isERC1155TokenReceiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4027,
                              "src": "7866:23:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                "typeString": "function (address) view returns (bool)"
                              }
                            },
                            "id": 2364,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7866:27:20",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7847:46:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2375,
                        "nodeType": "IfStatement",
                        "src": "7843:134:20",
                        "trueBody": {
                          "id": 2374,
                          "nodeType": "Block",
                          "src": "7895:82:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2367,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2196,
                                    "src": "7937:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2368,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2198,
                                    "src": "7943:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2369,
                                    "name": "nftIds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2201,
                                    "src": "7947:6:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 2370,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2236,
                                    "src": "7955:6:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "hexValue": "",
                                    "id": 2371,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7963:2:20",
                                    "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": 2366,
                                  "name": "_callOnERC1155BatchReceived",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1381,
                                  "src": "7909:27:20",
                                  "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": 2372,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7909:57:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2373,
                              "nodeType": "ExpressionStatement",
                              "src": "7909:57:20"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2194,
                    "nodeType": "StructuredDocumentation",
                    "src": "6253:36:20",
                    "text": "@inheritdoc IERC1155721Inventory"
                  },
                  "functionSelector": "f3993d11",
                  "id": 2377,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2203,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6417:8:20"
                  },
                  "parameters": {
                    "id": 2202,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2196,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2377,
                        "src": "6330:12:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2195,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6330:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2198,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2377,
                        "src": "6352:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2197,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6352:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2201,
                        "mutability": "mutable",
                        "name": "nftIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 2377,
                        "src": "6372:23:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2199,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6372:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2200,
                          "nodeType": "ArrayTypeName",
                          "src": "6372:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6320:81:20"
                  },
                  "returnParameters": {
                    "id": 2204,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6426:0:20"
                  },
                  "scope": 4060,
                  "src": "6294:1689:20",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1664,
                    4798
                  ],
                  "body": {
                    "id": 2476,
                    "nodeType": "Block",
                    "src": "8368:681:20",
                    "statements": [
                      {
                        "assignments": [
                          2395
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2395,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 2476,
                            "src": "8378:14:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2394,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8378:7:20",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2398,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2396,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "8395:10:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 2397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8395:12:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8378:29:20"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2405,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2400,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2382,
                                "src": "8425:2:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 2403,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8439: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": 2402,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8431:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2401,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8431:7:20",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2404,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8431:10:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "8425:16:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207472616e7366657220746f207a65726f",
                              "id": 2406,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8443:29:20",
                              "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": 2399,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8417:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2407,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8417:56:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2408,
                        "nodeType": "ExpressionStatement",
                        "src": "8417:56:20"
                      },
                      {
                        "assignments": [
                          2410
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2410,
                            "mutability": "mutable",
                            "name": "operatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 2476,
                            "src": "8483:15:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2409,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "8483:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2415,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2412,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2380,
                              "src": "8515:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2413,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2395,
                              "src": "8521:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2411,
                            "name": "_isOperatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1315,
                            "src": "8501:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 2414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8501:27:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8483:45:20"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 2416,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2384,
                              "src": "8543:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2417,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isFungibleToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1404,
                            "src": "8543:18:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (bool)"
                            }
                          },
                          "id": 2418,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8543:20:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "arguments": [
                              {
                                "id": 2430,
                                "name": "_collectionMaskLength",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 854,
                                "src": "8672:21:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 2428,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2384,
                                "src": "8650:2:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2429,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isNonFungibleToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1428,
                              "src": "8650: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": 2431,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8650:44:20",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 2452,
                            "nodeType": "Block",
                            "src": "8820:60:20",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "hexValue": "496e76656e746f72793a206e6f74206120746f6b656e206964",
                                      "id": 2449,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8841: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": 2448,
                                    "name": "revert",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -19,
                                      -19
                                    ],
                                    "referencedDeclaration": -19,
                                    "src": "8834:6:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (string memory) pure"
                                    }
                                  },
                                  "id": 2450,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8834:35:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 2451,
                                "nodeType": "ExpressionStatement",
                                "src": "8834:35:20"
                              }
                            ]
                          },
                          "id": 2453,
                          "nodeType": "IfStatement",
                          "src": "8646:234:20",
                          "trueBody": {
                            "id": 2447,
                            "nodeType": "Block",
                            "src": "8696:118:20",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 2433,
                                      "name": "from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2380,
                                      "src": "8723:4:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 2434,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2382,
                                      "src": "8729:2:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 2435,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2384,
                                      "src": "8733:2:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 2436,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2386,
                                      "src": "8737:5:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 2437,
                                      "name": "operatable",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2410,
                                      "src": "8744:10:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 2438,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8756:5:20",
                                      "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": 2432,
                                    "name": "_transferNFT",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3926,
                                    "src": "8710:12:20",
                                    "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": 2439,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8710:52:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 2440,
                                "nodeType": "ExpressionStatement",
                                "src": "8710:52:20"
                              },
                              {
                                "eventCall": {
                                  "arguments": [
                                    {
                                      "id": 2442,
                                      "name": "from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2380,
                                      "src": "8790:4:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 2443,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2382,
                                      "src": "8796:2:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 2444,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2384,
                                      "src": "8800:2:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 2441,
                                    "name": "Transfer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4728,
                                    "src": "8781:8:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                      "typeString": "function (address,address,uint256)"
                                    }
                                  },
                                  "id": 2445,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8781:22:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 2446,
                                "nodeType": "EmitStatement",
                                "src": "8776:27:20"
                              }
                            ]
                          }
                        },
                        "id": 2454,
                        "nodeType": "IfStatement",
                        "src": "8539:341:20",
                        "trueBody": {
                          "id": 2427,
                          "nodeType": "Block",
                          "src": "8565:75:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2420,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2380,
                                    "src": "8597:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2421,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2382,
                                    "src": "8603:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2422,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2384,
                                    "src": "8607:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 2423,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2386,
                                    "src": "8611:5:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 2424,
                                    "name": "operatable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2410,
                                    "src": "8618:10:20",
                                    "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": 2419,
                                  "name": "_transferFungible",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3831,
                                  "src": "8579:17:20",
                                  "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": 2425,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8579:50:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2426,
                              "nodeType": "ExpressionStatement",
                              "src": "8579:50:20"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 2456,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2395,
                              "src": "8910:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2457,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2380,
                              "src": "8918:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2458,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2382,
                              "src": "8924:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2459,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2384,
                              "src": "8928:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 2460,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2386,
                              "src": "8932:5:20",
                              "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": 2455,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1479,
                            "src": "8895: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": 2461,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8895:43:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2462,
                        "nodeType": "EmitStatement",
                        "src": "8890:48:20"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 2463,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2382,
                              "src": "8952:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 2464,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 671,
                            "src": "8952:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 2465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8952:15:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2475,
                        "nodeType": "IfStatement",
                        "src": "8948:95:20",
                        "trueBody": {
                          "id": 2474,
                          "nodeType": "Block",
                          "src": "8969:74:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2467,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2380,
                                    "src": "9006:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2468,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2382,
                                    "src": "9012:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2469,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2384,
                                    "src": "9016:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 2470,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2386,
                                    "src": "9020:5:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 2471,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2388,
                                    "src": "9027:4:20",
                                    "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": 2466,
                                  "name": "_callOnERC1155Received",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1347,
                                  "src": "8983:22:20",
                                  "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": 2472,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8983:49:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2473,
                              "nodeType": "ExpressionStatement",
                              "src": "8983:49:20"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2378,
                    "nodeType": "StructuredDocumentation",
                    "src": "8118:36:20",
                    "text": "@inheritdoc IERC1155721Inventory"
                  },
                  "functionSelector": "f242432a",
                  "id": 2477,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2392,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 2390,
                        "name": "IERC1155Inventory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1682,
                        "src": "8327:17:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155Inventory_$1682",
                          "typeString": "contract IERC1155Inventory"
                        }
                      },
                      {
                        "id": 2391,
                        "name": "IERC1155721Inventory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4851,
                        "src": "8346:20:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155721Inventory_$4851",
                          "typeString": "contract IERC1155721Inventory"
                        }
                      }
                    ],
                    "src": "8318:49:20"
                  },
                  "parameters": {
                    "id": 2389,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2380,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2477,
                        "src": "8194:12:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2379,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8194:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2382,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2477,
                        "src": "8216:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2381,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8216:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2384,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 2477,
                        "src": "8236:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2383,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8236:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2386,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 2477,
                        "src": "8256:13:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2385,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8256:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2388,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 2477,
                        "src": "8279:17:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2387,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8279:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8184:118:20"
                  },
                  "returnParameters": {
                    "id": 2393,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8368:0:20"
                  },
                  "scope": 4060,
                  "src": "8159:890:20",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1681,
                    4815
                  ],
                  "body": {
                    "id": 2504,
                    "nodeType": "Block",
                    "src": "9330:68:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2497,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2480,
                              "src": "9363:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2498,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2482,
                              "src": "9369:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2499,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2485,
                              "src": "9373:3:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 2500,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2488,
                              "src": "9378:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 2501,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2490,
                              "src": "9386:4:20",
                              "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": 2496,
                            "name": "_safeBatchTransferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2863,
                            "src": "9340:22:20",
                            "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": 2502,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9340:51:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2503,
                        "nodeType": "ExpressionStatement",
                        "src": "9340:51:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2478,
                    "nodeType": "StructuredDocumentation",
                    "src": "9055:36:20",
                    "text": "@inheritdoc IERC1155721Inventory"
                  },
                  "functionSelector": "2eb2c2d6",
                  "id": 2505,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2494,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 2492,
                        "name": "IERC1155Inventory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1682,
                        "src": "9289:17:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155Inventory_$1682",
                          "typeString": "contract IERC1155Inventory"
                        }
                      },
                      {
                        "id": 2493,
                        "name": "IERC1155721Inventory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4851,
                        "src": "9308:20:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155721Inventory_$4851",
                          "typeString": "contract IERC1155721Inventory"
                        }
                      }
                    ],
                    "src": "9280:49:20"
                  },
                  "parameters": {
                    "id": 2491,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2480,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2505,
                        "src": "9136:12:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2479,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9136:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2482,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2505,
                        "src": "9158:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2481,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9158:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2485,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 2505,
                        "src": "9178:20:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2483,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "9178:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2484,
                          "nodeType": "ArrayTypeName",
                          "src": "9178:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2488,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 2505,
                        "src": "9208:23:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2486,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "9208:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2487,
                          "nodeType": "ArrayTypeName",
                          "src": "9208:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2490,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 2505,
                        "src": "9241:17:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2489,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9241:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9126:138:20"
                  },
                  "returnParameters": {
                    "id": 2495,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9330:0:20"
                  },
                  "scope": 4060,
                  "src": "9096:302:20",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1102,
                    4826
                  ],
                  "body": {
                    "id": 2523,
                    "nodeType": "Block",
                    "src": "9702:60:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2519,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2508,
                              "src": "9736:8:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2520,
                              "name": "approved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2510,
                              "src": "9746:8:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "id": 2516,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "9712:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155721Inventory_$4060",
                                "typeString": "contract super ERC1155721Inventory"
                              }
                            },
                            "id": 2518,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setApprovalForAll",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1102,
                            "src": "9712:23:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,bool)"
                            }
                          },
                          "id": 2521,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9712:43:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2522,
                        "nodeType": "ExpressionStatement",
                        "src": "9712:43:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2506,
                    "nodeType": "StructuredDocumentation",
                    "src": "9533:36:20",
                    "text": "@inheritdoc IERC1155721Inventory"
                  },
                  "functionSelector": "a22cb465",
                  "id": 2524,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2514,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 2512,
                        "name": "IERC1155721Inventory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4851,
                        "src": "9658:20:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155721Inventory_$4851",
                          "typeString": "contract IERC1155721Inventory"
                        }
                      },
                      {
                        "id": 2513,
                        "name": "ERC1155InventoryBase",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1382,
                        "src": "9680:20:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC1155InventoryBase_$1382",
                          "typeString": "contract ERC1155InventoryBase"
                        }
                      }
                    ],
                    "src": "9649:52:20"
                  },
                  "parameters": {
                    "id": 2511,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2508,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 2524,
                        "src": "9601:16:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2507,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9601:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2510,
                        "mutability": "mutable",
                        "name": "approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 2524,
                        "src": "9619:13:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2509,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9619:4:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9600:33:20"
                  },
                  "returnParameters": {
                    "id": 2515,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9702:0:20"
                  },
                  "scope": 4060,
                  "src": "9574:188:20",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1120,
                    4839
                  ],
                  "body": {
                    "id": 2543,
                    "nodeType": "Block",
                    "src": "10005:68:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2539,
                              "name": "tokenOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2527,
                              "src": "10045:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2540,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2529,
                              "src": "10057:8:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 2537,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "10022:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155721Inventory_$4060",
                                "typeString": "contract super ERC1155721Inventory"
                              }
                            },
                            "id": 2538,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isApprovedForAll",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1120,
                            "src": "10022:22:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 2541,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10022:44:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 2536,
                        "id": 2542,
                        "nodeType": "Return",
                        "src": "10015:51:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2525,
                    "nodeType": "StructuredDocumentation",
                    "src": "9768:36:20",
                    "text": "@inheritdoc IERC1155721Inventory"
                  },
                  "functionSelector": "e985e9c5",
                  "id": 2544,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2533,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 2531,
                        "name": "IERC1155721Inventory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4851,
                        "src": "9934:20:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155721Inventory_$4851",
                          "typeString": "contract IERC1155721Inventory"
                        }
                      },
                      {
                        "id": 2532,
                        "name": "ERC1155InventoryBase",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1382,
                        "src": "9956:20:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC1155InventoryBase_$1382",
                          "typeString": "contract ERC1155InventoryBase"
                        }
                      }
                    ],
                    "src": "9925:52:20"
                  },
                  "parameters": {
                    "id": 2530,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2527,
                        "mutability": "mutable",
                        "name": "tokenOwner",
                        "nodeType": "VariableDeclaration",
                        "scope": 2544,
                        "src": "9835:18:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2526,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9835:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2529,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 2544,
                        "src": "9855:16:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2528,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9855:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9834:38:20"
                  },
                  "returnParameters": {
                    "id": 2536,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2535,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2544,
                        "src": "9995:4:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2534,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9995:4:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9994:6:20"
                  },
                  "scope": 4060,
                  "src": "9809:264:20",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1191,
                    4850
                  ],
                  "body": {
                    "id": 2560,
                    "nodeType": "Block",
                    "src": "10374:44:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2557,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2547,
                              "src": "10405:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 2555,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "10391:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155721Inventory_$4060",
                                "typeString": "contract super ERC1155721Inventory"
                              }
                            },
                            "id": 2556,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "ownerOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1191,
                            "src": "10391:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 2558,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10391:20:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 2554,
                        "id": 2559,
                        "nodeType": "Return",
                        "src": "10384:27:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2545,
                    "nodeType": "StructuredDocumentation",
                    "src": "10210:36:20",
                    "text": "@inheritdoc IERC1155721Inventory"
                  },
                  "functionSelector": "6352211e",
                  "id": 2561,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2551,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 2549,
                        "name": "IERC1155721Inventory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4851,
                        "src": "10312:20:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155721Inventory_$4851",
                          "typeString": "contract IERC1155721Inventory"
                        }
                      },
                      {
                        "id": 2550,
                        "name": "ERC1155InventoryBase",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1382,
                        "src": "10334:20:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC1155InventoryBase_$1382",
                          "typeString": "contract ERC1155InventoryBase"
                        }
                      }
                    ],
                    "src": "10303:52:20"
                  },
                  "parameters": {
                    "id": 2548,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2547,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 2561,
                        "src": "10268:13:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2546,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10268:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10267:15:20"
                  },
                  "returnParameters": {
                    "id": 2554,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2553,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2561,
                        "src": "10365:7:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2552,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10365:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10364:9:20"
                  },
                  "scope": 4060,
                  "src": "10251:167:20",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2648,
                    "nodeType": "Block",
                    "src": "10996:588:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2581,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2576,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2566,
                                "src": "11014:2:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 2579,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11028: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": 2578,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11020:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2577,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11020:7:20",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2580,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11020:10:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "11014:16:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207472616e7366657220746f207a65726f",
                              "id": 2582,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11032:29:20",
                              "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": 2575,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11006:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2583,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11006:56:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2584,
                        "nodeType": "ExpressionStatement",
                        "src": "11006:56:20"
                      },
                      {
                        "assignments": [
                          2586
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2586,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 2648,
                            "src": "11072:14:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2585,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "11072:7:20",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2589,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2587,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "11089:10:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 2588,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11089:12:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11072:29:20"
                      },
                      {
                        "assignments": [
                          2591
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2591,
                            "mutability": "mutable",
                            "name": "operatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 2648,
                            "src": "11111:15:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2590,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "11111:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2596,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2593,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2564,
                              "src": "11143:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2594,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2586,
                              "src": "11149:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2592,
                            "name": "_isOperatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1315,
                            "src": "11129:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 2595,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11129:27:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11111:45:20"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2598,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2564,
                              "src": "11180:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2599,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2566,
                              "src": "11186:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2600,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2568,
                              "src": "11190:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "31",
                              "id": 2601,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11197:1:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            {
                              "id": 2602,
                              "name": "operatable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2591,
                              "src": "11200:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 2603,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11212:5:20",
                              "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": 2597,
                            "name": "_transferNFT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3926,
                            "src": "11167:12:20",
                            "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": 2604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11167:51:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2605,
                        "nodeType": "ExpressionStatement",
                        "src": "11167:51:20"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 2607,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2564,
                              "src": "11243:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2608,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2566,
                              "src": "11249:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2609,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2568,
                              "src": "11253:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2606,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4728,
                            "src": "11234:8:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 2610,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11234:25:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2611,
                        "nodeType": "EmitStatement",
                        "src": "11229:30:20"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 2613,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2586,
                              "src": "11289:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2614,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2564,
                              "src": "11297:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2615,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2566,
                              "src": "11303:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2616,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2568,
                              "src": "11307:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "31",
                              "id": 2617,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11314:1:20",
                              "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": 2612,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1479,
                            "src": "11274: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": 2618,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11274:42:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2619,
                        "nodeType": "EmitStatement",
                        "src": "11269:47:20"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 2620,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2566,
                              "src": "11330:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 2621,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 671,
                            "src": "11330:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 2622,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11330:15:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2647,
                        "nodeType": "IfStatement",
                        "src": "11326:252:20",
                        "trueBody": {
                          "id": 2646,
                          "nodeType": "Block",
                          "src": "11347:231:20",
                          "statements": [
                            {
                              "condition": {
                                "arguments": [
                                  {
                                    "id": 2624,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2566,
                                    "src": "11389:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2623,
                                  "name": "_isERC1155TokenReceiver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4027,
                                  "src": "11365:23:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address) view returns (bool)"
                                  }
                                },
                                "id": 2625,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11365:27:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "id": 2635,
                                  "name": "safe",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2572,
                                  "src": "11485:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 2644,
                                "nodeType": "IfStatement",
                                "src": "11481:87:20",
                                "trueBody": {
                                  "id": 2643,
                                  "nodeType": "Block",
                                  "src": "11491:77:20",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 2637,
                                            "name": "from",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2564,
                                            "src": "11531:4:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 2638,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2566,
                                            "src": "11537:2:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 2639,
                                            "name": "nftId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2568,
                                            "src": "11541:5:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 2640,
                                            "name": "data",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2570,
                                            "src": "11548:4:20",
                                            "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": 2636,
                                          "name": "_callOnERC721Received",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4059,
                                          "src": "11509:21:20",
                                          "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": 2641,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11509:44:20",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 2642,
                                      "nodeType": "ExpressionStatement",
                                      "src": "11509:44:20"
                                    }
                                  ]
                                }
                              },
                              "id": 2645,
                              "nodeType": "IfStatement",
                              "src": "11361:207:20",
                              "trueBody": {
                                "id": 2634,
                                "nodeType": "Block",
                                "src": "11394:81:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 2627,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2564,
                                          "src": "11435:4:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 2628,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2566,
                                          "src": "11441:2:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 2629,
                                          "name": "nftId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2568,
                                          "src": "11445:5:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "hexValue": "31",
                                          "id": 2630,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "11452:1:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        {
                                          "id": 2631,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2570,
                                          "src": "11455:4:20",
                                          "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": 2626,
                                        "name": "_callOnERC1155Received",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1347,
                                        "src": "11412:22:20",
                                        "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": 2632,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "11412:48:20",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2633,
                                    "nodeType": "ExpressionStatement",
                                    "src": "11412:48:20"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2562,
                    "nodeType": "StructuredDocumentation",
                    "src": "10553:289:20",
                    "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": 2649,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2573,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2564,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2649,
                        "src": "10879:12:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2563,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10879:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2566,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2649,
                        "src": "10901:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2565,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10901:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2568,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 2649,
                        "src": "10921:13:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2567,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10921:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2570,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 2649,
                        "src": "10944:17:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2569,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "10944:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2572,
                        "mutability": "mutable",
                        "name": "safe",
                        "nodeType": "VariableDeclaration",
                        "scope": 2649,
                        "src": "10971:9:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2571,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "10971:4:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10869:117:20"
                  },
                  "returnParameters": {
                    "id": 2574,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10996:0:20"
                  },
                  "scope": 4060,
                  "src": "10847:737:20",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2862,
                    "nodeType": "Block",
                    "src": "11954:1964:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2671,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2666,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2654,
                                "src": "11972:2:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 2669,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11986: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": 2668,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11978:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2667,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11978:7:20",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2670,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11978:10:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "11972:16:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207472616e7366657220746f207a65726f",
                              "id": 2672,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11990:29:20",
                              "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": 2665,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11964:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2673,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11964:56:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2674,
                        "nodeType": "ExpressionStatement",
                        "src": "11964:56:20"
                      },
                      {
                        "assignments": [
                          2676
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2676,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 2862,
                            "src": "12030:14:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2675,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12030:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2679,
                        "initialValue": {
                          "expression": {
                            "id": 2677,
                            "name": "ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2657,
                            "src": "12047:3:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 2678,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "12047:10:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12030:27:20"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2684,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2681,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2676,
                                "src": "12075:6:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 2682,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2660,
                                  "src": "12085:6:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 2683,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "12085:13:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12075:23:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a20696e636f6e73697374656e7420617272617973",
                              "id": 2685,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12100: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": 2680,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "12067:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2686,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12067:66:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2687,
                        "nodeType": "ExpressionStatement",
                        "src": "12067:66:20"
                      },
                      {
                        "assignments": [
                          2689
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2689,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 2862,
                            "src": "12143:14:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2688,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "12143:7:20",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2692,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2690,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "12160:10:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 2691,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12160:12:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12143:29:20"
                      },
                      {
                        "assignments": [
                          2694
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2694,
                            "mutability": "mutable",
                            "name": "operatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 2862,
                            "src": "12182:15:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2693,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "12182:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2699,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2696,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2652,
                              "src": "12214:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2697,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2689,
                              "src": "12220:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2695,
                            "name": "_isOperatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1315,
                            "src": "12200:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 2698,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12200:27:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12182:45:20"
                      },
                      {
                        "assignments": [
                          2701
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2701,
                            "mutability": "mutable",
                            "name": "nfCollectionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 2862,
                            "src": "12238:22:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2700,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12238:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2702,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12238:22:20"
                      },
                      {
                        "assignments": [
                          2704
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2704,
                            "mutability": "mutable",
                            "name": "nfCollectionCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 2862,
                            "src": "12270:25:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2703,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12270:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2705,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12270:25:20"
                      },
                      {
                        "assignments": [
                          2707
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2707,
                            "mutability": "mutable",
                            "name": "nftsCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 2862,
                            "src": "12305:17:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2706,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12305:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2708,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12305:17:20"
                      },
                      {
                        "body": {
                          "id": 2816,
                          "nodeType": "Block",
                          "src": "12366:1131:20",
                          "statements": [
                            {
                              "assignments": [
                                2719
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2719,
                                  "mutability": "mutable",
                                  "name": "id",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2816,
                                  "src": "12380:10:20",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2718,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12380:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2723,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 2720,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2657,
                                  "src": "12393:3:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 2722,
                                "indexExpression": {
                                  "id": 2721,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2710,
                                  "src": "12397:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12393:6:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12380:19:20"
                            },
                            {
                              "condition": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 2724,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2719,
                                    "src": "12417:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2725,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "isFungibleToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1404,
                                  "src": "12417:18:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (bool)"
                                  }
                                },
                                "id": 2726,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12417:20:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "arguments": [
                                    {
                                      "id": 2740,
                                      "name": "_collectionMaskLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 854,
                                      "src": "12558:21:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 2738,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2719,
                                      "src": "12536:2:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2739,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "isNonFungibleToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1428,
                                    "src": "12536: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": 2741,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12536:44:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 2813,
                                  "nodeType": "Block",
                                  "src": "13419:68:20",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "hexValue": "496e76656e746f72793a206e6f74206120746f6b656e206964",
                                            "id": 2810,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "13444: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": 2809,
                                          "name": "revert",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [
                                            -19,
                                            -19
                                          ],
                                          "referencedDeclaration": -19,
                                          "src": "13437:6:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                            "typeString": "function (string memory) pure"
                                          }
                                        },
                                        "id": 2811,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13437:35:20",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 2812,
                                      "nodeType": "ExpressionStatement",
                                      "src": "13437:35:20"
                                    }
                                  ]
                                },
                                "id": 2814,
                                "nodeType": "IfStatement",
                                "src": "12532:955:20",
                                "trueBody": {
                                  "id": 2808,
                                  "nodeType": "Block",
                                  "src": "12582:831:20",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 2743,
                                            "name": "from",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2652,
                                            "src": "12613:4:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 2744,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2654,
                                            "src": "12619:2:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 2745,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2719,
                                            "src": "12623:2:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "baseExpression": {
                                              "id": 2746,
                                              "name": "values",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2660,
                                              "src": "12627:6:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                "typeString": "uint256[] memory"
                                              }
                                            },
                                            "id": 2748,
                                            "indexExpression": {
                                              "id": 2747,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2710,
                                              "src": "12634:1:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "12627:9:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 2749,
                                            "name": "operatable",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2694,
                                            "src": "12638:10:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          {
                                            "hexValue": "74727565",
                                            "id": 2750,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "12650:4:20",
                                            "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": 2742,
                                          "name": "_transferNFT",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3926,
                                          "src": "12600:12:20",
                                          "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": 2751,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12600:55:20",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 2752,
                                      "nodeType": "ExpressionStatement",
                                      "src": "12600:55:20"
                                    },
                                    {
                                      "eventCall": {
                                        "arguments": [
                                          {
                                            "id": 2754,
                                            "name": "from",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2652,
                                            "src": "12687:4:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 2755,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2654,
                                            "src": "12693:2:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 2756,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2719,
                                            "src": "12697:2:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 2753,
                                          "name": "Transfer",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4728,
                                          "src": "12678:8:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                            "typeString": "function (address,address,uint256)"
                                          }
                                        },
                                        "id": 2757,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12678:22:20",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 2758,
                                      "nodeType": "EmitStatement",
                                      "src": "12673:27:20"
                                    },
                                    {
                                      "assignments": [
                                        2760
                                      ],
                                      "declarations": [
                                        {
                                          "constant": false,
                                          "id": 2760,
                                          "mutability": "mutable",
                                          "name": "nextCollectionId",
                                          "nodeType": "VariableDeclaration",
                                          "scope": 2808,
                                          "src": "12718:24:20",
                                          "stateVariable": false,
                                          "storageLocation": "default",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "typeName": {
                                            "id": 2759,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "12718:7:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "visibility": "internal"
                                        }
                                      ],
                                      "id": 2765,
                                      "initialValue": {
                                        "arguments": [
                                          {
                                            "id": 2763,
                                            "name": "_collectionMaskLength",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 854,
                                            "src": "12773:21:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "id": 2761,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2719,
                                            "src": "12745:2:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 2762,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getNonFungibleCollection",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1445,
                                          "src": "12745: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": 2764,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12745:50:20",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "VariableDeclarationStatement",
                                      "src": "12718:77:20"
                                    },
                                    {
                                      "condition": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 2768,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 2766,
                                          "name": "nfCollectionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2701,
                                          "src": "12817:14:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "hexValue": "30",
                                          "id": 2767,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "12835:1:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "12817:19:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": {
                                        "id": 2806,
                                        "nodeType": "Block",
                                        "src": "12961:438:20",
                                        "statements": [
                                          {
                                            "condition": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 2780,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 2778,
                                                "name": "nextCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2760,
                                                "src": "12987:16:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "!=",
                                              "rightExpression": {
                                                "id": 2779,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2701,
                                                "src": "13007:14:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "12987:34:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "falseBody": {
                                              "id": 2804,
                                              "nodeType": "Block",
                                              "src": "13313:68:20",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "id": 2802,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "UnaryOperation",
                                                    "operator": "++",
                                                    "prefix": true,
                                                    "src": "13339:19:20",
                                                    "subExpression": {
                                                      "id": 2801,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 2704,
                                                      "src": "13341:17:20",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 2803,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "13339:19:20"
                                                }
                                              ]
                                            },
                                            "id": 2805,
                                            "nodeType": "IfStatement",
                                            "src": "12983:398:20",
                                            "trueBody": {
                                              "id": 2800,
                                              "nodeType": "Block",
                                              "src": "13023:284:20",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "arguments": [
                                                      {
                                                        "id": 2782,
                                                        "name": "from",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2652,
                                                        "src": "13078:4:20",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      {
                                                        "id": 2783,
                                                        "name": "to",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2654,
                                                        "src": "13084:2:20",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      {
                                                        "id": 2784,
                                                        "name": "nfCollectionId",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2701,
                                                        "src": "13088:14:20",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      {
                                                        "id": 2785,
                                                        "name": "nfCollectionCount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2704,
                                                        "src": "13104:17:20",
                                                        "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": 2781,
                                                      "name": "_transferNFTUpdateCollection",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 3986,
                                                      "src": "13049:28:20",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                        "typeString": "function (address,address,uint256,uint256)"
                                                      }
                                                    },
                                                    "id": 2786,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "13049:73:20",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_tuple$__$",
                                                      "typeString": "tuple()"
                                                    }
                                                  },
                                                  "id": 2787,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "13049:73:20"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 2790,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 2788,
                                                      "name": "nfCollectionId",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 2701,
                                                      "src": "13148:14:20",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "id": 2789,
                                                      "name": "nextCollectionId",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 2760,
                                                      "src": "13165:16:20",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "13148:33:20",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 2791,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "13148:33:20"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 2794,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 2792,
                                                      "name": "nftsCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 2707,
                                                      "src": "13207:9:20",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                      "id": 2793,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 2704,
                                                      "src": "13220:17:20",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "13207:30:20",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 2795,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "13207:30:20"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 2798,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 2796,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 2704,
                                                      "src": "13263:17:20",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "hexValue": "31",
                                                      "id": 2797,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "13283:1:20",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_1_by_1",
                                                        "typeString": "int_const 1"
                                                      },
                                                      "value": "1"
                                                    },
                                                    "src": "13263:21:20",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 2799,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "13263:21:20"
                                                }
                                              ]
                                            }
                                          }
                                        ]
                                      },
                                      "id": 2807,
                                      "nodeType": "IfStatement",
                                      "src": "12813:586:20",
                                      "trueBody": {
                                        "id": 2777,
                                        "nodeType": "Block",
                                        "src": "12838:117:20",
                                        "statements": [
                                          {
                                            "expression": {
                                              "id": 2771,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 2769,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2701,
                                                "src": "12860:14:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "id": 2770,
                                                "name": "nextCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2760,
                                                "src": "12877:16:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "12860:33:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 2772,
                                            "nodeType": "ExpressionStatement",
                                            "src": "12860:33:20"
                                          },
                                          {
                                            "expression": {
                                              "id": 2775,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 2773,
                                                "name": "nfCollectionCount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2704,
                                                "src": "12915:17:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "hexValue": "31",
                                                "id": 2774,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "12935:1:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "src": "12915:21:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 2776,
                                            "nodeType": "ExpressionStatement",
                                            "src": "12915:21:20"
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                }
                              },
                              "id": 2815,
                              "nodeType": "IfStatement",
                              "src": "12413:1074:20",
                              "trueBody": {
                                "id": 2737,
                                "nodeType": "Block",
                                "src": "12439:87:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 2728,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2652,
                                          "src": "12475:4:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 2729,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2654,
                                          "src": "12481:2:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 2730,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2719,
                                          "src": "12485:2:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "baseExpression": {
                                            "id": 2731,
                                            "name": "values",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2660,
                                            "src": "12489:6:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                              "typeString": "uint256[] memory"
                                            }
                                          },
                                          "id": 2733,
                                          "indexExpression": {
                                            "id": 2732,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2710,
                                            "src": "12496:1:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "12489:9:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 2734,
                                          "name": "operatable",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2694,
                                          "src": "12500:10:20",
                                          "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": 2727,
                                        "name": "_transferFungible",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3831,
                                        "src": "12457:17:20",
                                        "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": 2735,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12457:54:20",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2736,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12457:54:20"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2714,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2712,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2710,
                            "src": "12348:1:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 2713,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2676,
                            "src": "12353:6:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12348:11:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2817,
                        "initializationExpression": {
                          "assignments": [
                            2710
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2710,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 2817,
                              "src": "12337:9:20",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2709,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "12337:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 2711,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "12337:9:20"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 2716,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "12361:3:20",
                            "subExpression": {
                              "id": 2715,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2710,
                              "src": "12363:1:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2717,
                          "nodeType": "ExpressionStatement",
                          "src": "12361:3:20"
                        },
                        "nodeType": "ForStatement",
                        "src": "12332:1165:20"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2820,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2818,
                            "name": "nfCollectionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2701,
                            "src": "13511:14:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2819,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13529:1:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13511:19:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2839,
                        "nodeType": "IfStatement",
                        "src": "13507:228:20",
                        "trueBody": {
                          "id": 2838,
                          "nodeType": "Block",
                          "src": "13532:203:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2822,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2652,
                                    "src": "13575:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2823,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2654,
                                    "src": "13581:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2824,
                                    "name": "nfCollectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2701,
                                    "src": "13585:14:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 2825,
                                    "name": "nfCollectionCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2704,
                                    "src": "13601:17:20",
                                    "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": 2821,
                                  "name": "_transferNFTUpdateCollection",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3986,
                                  "src": "13546:28:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256)"
                                  }
                                },
                                "id": 2826,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13546:73:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2827,
                              "nodeType": "ExpressionStatement",
                              "src": "13546:73:20"
                            },
                            {
                              "expression": {
                                "id": 2830,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2828,
                                  "name": "nftsCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2707,
                                  "src": "13633:9:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 2829,
                                  "name": "nfCollectionCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2704,
                                  "src": "13646:17:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13633:30:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2831,
                              "nodeType": "ExpressionStatement",
                              "src": "13633:30:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2833,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2652,
                                    "src": "13704:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2834,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2654,
                                    "src": "13710:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2835,
                                    "name": "nftsCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2707,
                                    "src": "13714:9:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2832,
                                  "name": "_transferNFTUpdateBalances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3953,
                                  "src": "13677:26:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 2836,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13677:47:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2837,
                              "nodeType": "ExpressionStatement",
                              "src": "13677:47:20"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 2841,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "13764:10:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 2842,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13764:12:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 2843,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2652,
                              "src": "13778:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2844,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2654,
                              "src": "13784:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2845,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2657,
                              "src": "13788:3:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 2846,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2660,
                              "src": "13793:6:20",
                              "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": 2840,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1493,
                            "src": "13750: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": 2847,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13750:50:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2848,
                        "nodeType": "EmitStatement",
                        "src": "13745:55:20"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 2849,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2654,
                              "src": "13814:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 2850,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 671,
                            "src": "13814:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 2851,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13814:15:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2861,
                        "nodeType": "IfStatement",
                        "src": "13810:102:20",
                        "trueBody": {
                          "id": 2860,
                          "nodeType": "Block",
                          "src": "13831:81:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2853,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2652,
                                    "src": "13873:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2854,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2654,
                                    "src": "13879:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2855,
                                    "name": "ids",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2657,
                                    "src": "13883:3:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 2856,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2660,
                                    "src": "13888:6:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 2857,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2662,
                                    "src": "13896:4:20",
                                    "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": 2852,
                                  "name": "_callOnERC1155BatchReceived",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1381,
                                  "src": "13845:27:20",
                                  "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": 2858,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13845:56:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2859,
                              "nodeType": "ExpressionStatement",
                              "src": "13845:56:20"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2650,
                    "nodeType": "StructuredDocumentation",
                    "src": "11590:180:20",
                    "text": " Safely transfers a batch of tokens (ERC1155-compatible).\n @dev See {IERC1155721Inventory-safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)}."
                  },
                  "id": 2863,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeBatchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2663,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2652,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2863,
                        "src": "11816:12:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2651,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11816:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2654,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2863,
                        "src": "11838:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2653,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11838:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2657,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 2863,
                        "src": "11858:20:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2655,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "11858:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2656,
                          "nodeType": "ArrayTypeName",
                          "src": "11858:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2660,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 2863,
                        "src": "11888:23:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2658,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "11888:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2659,
                          "nodeType": "ArrayTypeName",
                          "src": "11888:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2662,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 2863,
                        "src": "11921:17:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2661,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "11921:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11806:138:20"
                  },
                  "returnParameters": {
                    "id": 2664,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11954:0:20"
                  },
                  "scope": 4060,
                  "src": "11775:2143:20",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2955,
                    "nodeType": "Block",
                    "src": "14309:589:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2881,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2876,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2866,
                                "src": "14327:2:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 2879,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14341: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": 2878,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14333:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2877,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14333:7:20",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2880,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14333:10:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "14327:16:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206d696e7420746f207a65726f",
                              "id": 2882,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14345:25:20",
                              "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": 2875,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14319:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2883,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14319:52:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2884,
                        "nodeType": "ExpressionStatement",
                        "src": "14319:52:20"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 2888,
                                  "name": "_collectionMaskLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 854,
                                  "src": "14414:21:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 2886,
                                  "name": "nftId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2868,
                                  "src": "14389:5:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 2887,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isNonFungibleToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1428,
                                "src": "14389:24: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": 2889,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14389:47:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f7420616e204e4654",
                              "id": 2890,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14438:23:20",
                              "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": 2885,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14381:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14381:81:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2892,
                        "nodeType": "ExpressionStatement",
                        "src": "14381:81:20"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2894,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2866,
                              "src": "14482:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2895,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2868,
                              "src": "14486:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "31",
                              "id": 2896,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14493:1:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 2897,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14496:5:20",
                              "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": 2893,
                            "name": "_mintNFT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3767,
                            "src": "14473:8:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,uint256,bool)"
                            }
                          },
                          "id": 2898,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14473:29:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2899,
                        "nodeType": "ExpressionStatement",
                        "src": "14473:29:20"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 2903,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14535: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": 2902,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "14527:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2901,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "14527:7:20",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2904,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14527:10:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 2905,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2866,
                              "src": "14539:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2906,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2868,
                              "src": "14543:5:20",
                              "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": 2900,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4728,
                            "src": "14518:8:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 2907,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14518:31:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2908,
                        "nodeType": "EmitStatement",
                        "src": "14513:36:20"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 2910,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "14579:10:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 2911,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14579:12:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 2914,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14601: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": 2913,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "14593:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2912,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "14593:7:20",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2915,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14593:10:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 2916,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2866,
                              "src": "14605:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2917,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2868,
                              "src": "14609:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "31",
                              "id": 2918,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14616:1:20",
                              "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": 2909,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1479,
                            "src": "14564: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": 2919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14564:54:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2920,
                        "nodeType": "EmitStatement",
                        "src": "14559:59:20"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 2921,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2866,
                              "src": "14632:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 2922,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 671,
                            "src": "14632:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 2923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14632:15:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2954,
                        "nodeType": "IfStatement",
                        "src": "14628:264:20",
                        "trueBody": {
                          "id": 2953,
                          "nodeType": "Block",
                          "src": "14649:243:20",
                          "statements": [
                            {
                              "condition": {
                                "arguments": [
                                  {
                                    "id": 2925,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2866,
                                    "src": "14691:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2924,
                                  "name": "_isERC1155TokenReceiver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4027,
                                  "src": "14667:23:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address) view returns (bool)"
                                  }
                                },
                                "id": 2926,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14667:27:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "id": 2939,
                                  "name": "safe",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2872,
                                  "src": "14793:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 2951,
                                "nodeType": "IfStatement",
                                "src": "14789:93:20",
                                "trueBody": {
                                  "id": 2950,
                                  "nodeType": "Block",
                                  "src": "14799:83:20",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "hexValue": "30",
                                                "id": 2943,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "14847: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": 2942,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "14839:7:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 2941,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "14839:7:20",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 2944,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "14839:10:20",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            }
                                          },
                                          {
                                            "id": 2945,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2866,
                                            "src": "14851:2:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 2946,
                                            "name": "nftId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2868,
                                            "src": "14855:5:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 2947,
                                            "name": "data",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2870,
                                            "src": "14862:4:20",
                                            "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": 2940,
                                          "name": "_callOnERC721Received",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4059,
                                          "src": "14817:21:20",
                                          "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": 2948,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "14817:50:20",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 2949,
                                      "nodeType": "ExpressionStatement",
                                      "src": "14817:50:20"
                                    }
                                  ]
                                }
                              },
                              "id": 2952,
                              "nodeType": "IfStatement",
                              "src": "14663:219:20",
                              "trueBody": {
                                "id": 2938,
                                "nodeType": "Block",
                                "src": "14696:87:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "hexValue": "30",
                                              "id": 2930,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "14745: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": 2929,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "14737:7:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": {
                                              "id": 2928,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "14737:7:20",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 2931,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "14737:10:20",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        },
                                        {
                                          "id": 2932,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2866,
                                          "src": "14749:2:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 2933,
                                          "name": "nftId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2868,
                                          "src": "14753:5:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "hexValue": "31",
                                          "id": 2934,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "14760:1:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        {
                                          "id": 2935,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2870,
                                          "src": "14763:4:20",
                                          "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": 2927,
                                        "name": "_callOnERC1155Received",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1347,
                                        "src": "14714:22:20",
                                        "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": 2936,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "14714:54:20",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2937,
                                    "nodeType": "ExpressionStatement",
                                    "src": "14714:54:20"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2864,
                    "nodeType": "StructuredDocumentation",
                    "src": "13924:261:20",
                    "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": 2956,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2873,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2866,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2956,
                        "src": "14214:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2865,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14214:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2868,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 2956,
                        "src": "14234:13:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2867,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14234:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2870,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 2956,
                        "src": "14257:17:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2869,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "14257:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2872,
                        "mutability": "mutable",
                        "name": "safe",
                        "nodeType": "VariableDeclaration",
                        "scope": 2956,
                        "src": "14284:9:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2871,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "14284:4:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14204:95:20"
                  },
                  "returnParameters": {
                    "id": 2874,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14309:0:20"
                  },
                  "scope": 4060,
                  "src": "14190:708:20",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3148,
                    "nodeType": "Block",
                    "src": "15137:1557:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2971,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2966,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2959,
                                "src": "15155:2:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 2969,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15169: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": 2968,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "15161:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2967,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15161:7:20",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2970,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15161:10:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "15155:16:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206d696e7420746f207a65726f",
                              "id": 2972,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15173:25:20",
                              "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": 2965,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "15147:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2973,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15147:52:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2974,
                        "nodeType": "ExpressionStatement",
                        "src": "15147:52:20"
                      },
                      {
                        "assignments": [
                          2976
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2976,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 3148,
                            "src": "15210:14:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2975,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15210:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2979,
                        "initialValue": {
                          "expression": {
                            "id": 2977,
                            "name": "nftIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2962,
                            "src": "15227:6:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 2978,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "15227:13:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15210:30:20"
                      },
                      {
                        "assignments": [
                          2984
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2984,
                            "mutability": "mutable",
                            "name": "values",
                            "nodeType": "VariableDeclaration",
                            "scope": 3148,
                            "src": "15250:23:20",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 2982,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "15250:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2983,
                              "nodeType": "ArrayTypeName",
                              "src": "15250:9:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2990,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2988,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2976,
                              "src": "15290:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2987,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "15276: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": 2985,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "15280:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2986,
                              "nodeType": "ArrayTypeName",
                              "src": "15280:9:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 2989,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15276:21:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15250:47:20"
                      },
                      {
                        "assignments": [
                          2992
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2992,
                            "mutability": "mutable",
                            "name": "nfCollectionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 3148,
                            "src": "15308:22:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2991,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15308:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2993,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15308:22:20"
                      },
                      {
                        "assignments": [
                          2995
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2995,
                            "mutability": "mutable",
                            "name": "nfCollectionCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 3148,
                            "src": "15340:25:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2994,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15340:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2996,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15340:25:20"
                      },
                      {
                        "body": {
                          "id": 3094,
                          "nodeType": "Block",
                          "src": "15409:902:20",
                          "statements": [
                            {
                              "assignments": [
                                3007
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3007,
                                  "mutability": "mutable",
                                  "name": "nftId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3094,
                                  "src": "15423:13:20",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3006,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15423:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3011,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 3008,
                                  "name": "nftIds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2962,
                                  "src": "15439:6:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 3010,
                                "indexExpression": {
                                  "id": 3009,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2998,
                                  "src": "15446:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15439:9:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15423:25:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 3015,
                                        "name": "_collectionMaskLength",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 854,
                                        "src": "15495:21:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 3013,
                                        "name": "nftId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3007,
                                        "src": "15470:5:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 3014,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "isNonFungibleToken",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1428,
                                      "src": "15470:24: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": 3016,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15470:47:20",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "496e76656e746f72793a206e6f7420616e204e4654",
                                    "id": 3017,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15519:23:20",
                                    "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": 3012,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "15462:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 3018,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15462:81:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3019,
                              "nodeType": "ExpressionStatement",
                              "src": "15462:81:20"
                            },
                            {
                              "expression": {
                                "id": 3024,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 3020,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2984,
                                    "src": "15557:6:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 3022,
                                  "indexExpression": {
                                    "id": 3021,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2998,
                                    "src": "15564:1:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "15557:9:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 3023,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15569:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "15557:13:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3025,
                              "nodeType": "ExpressionStatement",
                              "src": "15557:13:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3027,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2959,
                                    "src": "15593:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 3028,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3007,
                                    "src": "15597:5:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "hexValue": "31",
                                    "id": 3029,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15604:1:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  {
                                    "hexValue": "74727565",
                                    "id": 3030,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15607:4:20",
                                    "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": 3026,
                                  "name": "_mintNFT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3767,
                                  "src": "15584:8:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                    "typeString": "function (address,uint256,uint256,bool)"
                                  }
                                },
                                "id": 3031,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15584:28:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3032,
                              "nodeType": "ExpressionStatement",
                              "src": "15584:28:20"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 3036,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "15648: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": 3035,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "15640:7:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3034,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "15640:7:20",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3037,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15640:10:20",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 3038,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2959,
                                    "src": "15652:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 3039,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3007,
                                    "src": "15656:5:20",
                                    "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": 3033,
                                  "name": "Transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4728,
                                  "src": "15631:8:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 3040,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15631:31:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3041,
                              "nodeType": "EmitStatement",
                              "src": "15626:36:20"
                            },
                            {
                              "assignments": [
                                3043
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3043,
                                  "mutability": "mutable",
                                  "name": "nextCollectionId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3094,
                                  "src": "15676:24:20",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3042,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15676:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3048,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 3046,
                                    "name": "_collectionMaskLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 854,
                                    "src": "15734:21:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 3044,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3007,
                                    "src": "15703:5:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3045,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getNonFungibleCollection",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1445,
                                  "src": "15703: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": 3047,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15703:53:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15676:80:20"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3051,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3049,
                                  "name": "nfCollectionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2992,
                                  "src": "15774:14:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 3050,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15792:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "15774:19:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 3092,
                                "nodeType": "Block",
                                "src": "15906:395:20",
                                "statements": [
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 3063,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 3061,
                                        "name": "nextCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3043,
                                        "src": "15928:16:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "id": 3062,
                                        "name": "nfCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2992,
                                        "src": "15948:14:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "15928:34:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 3090,
                                      "nodeType": "Block",
                                      "src": "16227:60:20",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 3088,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": true,
                                            "src": "16249:19:20",
                                            "subExpression": {
                                              "id": 3087,
                                              "name": "nfCollectionCount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2995,
                                              "src": "16251:17:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 3089,
                                          "nodeType": "ExpressionStatement",
                                          "src": "16249:19:20"
                                        }
                                      ]
                                    },
                                    "id": 3091,
                                    "nodeType": "IfStatement",
                                    "src": "15924:363:20",
                                    "trueBody": {
                                      "id": 3086,
                                      "nodeType": "Block",
                                      "src": "15964:257:20",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 3070,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "baseExpression": {
                                                "baseExpression": {
                                                  "id": 3064,
                                                  "name": "_balances",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 875,
                                                  "src": "15986:9:20",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                    "typeString": "mapping(uint256 => mapping(address => uint256))"
                                                  }
                                                },
                                                "id": 3067,
                                                "indexExpression": {
                                                  "id": 3065,
                                                  "name": "nfCollectionId",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 2992,
                                                  "src": "15996:14:20",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "15986:25:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                  "typeString": "mapping(address => uint256)"
                                                }
                                              },
                                              "id": 3068,
                                              "indexExpression": {
                                                "id": 3066,
                                                "name": "to",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2959,
                                                "src": "16012:2:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "nodeType": "IndexAccess",
                                              "src": "15986:29:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "+=",
                                            "rightHandSide": {
                                              "id": 3069,
                                              "name": "nfCollectionCount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2995,
                                              "src": "16019:17:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "15986:50:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 3071,
                                          "nodeType": "ExpressionStatement",
                                          "src": "15986:50:20"
                                        },
                                        {
                                          "expression": {
                                            "id": 3076,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "baseExpression": {
                                                "id": 3072,
                                                "name": "_supplies",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 879,
                                                "src": "16058:9:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                  "typeString": "mapping(uint256 => uint256)"
                                                }
                                              },
                                              "id": 3074,
                                              "indexExpression": {
                                                "id": 3073,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2992,
                                                "src": "16068:14:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "nodeType": "IndexAccess",
                                              "src": "16058:25:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "+=",
                                            "rightHandSide": {
                                              "id": 3075,
                                              "name": "nfCollectionCount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2995,
                                              "src": "16087:17:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "16058:46:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 3077,
                                          "nodeType": "ExpressionStatement",
                                          "src": "16058:46:20"
                                        },
                                        {
                                          "expression": {
                                            "id": 3080,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 3078,
                                              "name": "nfCollectionId",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2992,
                                              "src": "16126:14:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "id": 3079,
                                              "name": "nextCollectionId",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3043,
                                              "src": "16143:16:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "16126:33:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 3081,
                                          "nodeType": "ExpressionStatement",
                                          "src": "16126:33:20"
                                        },
                                        {
                                          "expression": {
                                            "id": 3084,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 3082,
                                              "name": "nfCollectionCount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2995,
                                              "src": "16181:17:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "hexValue": "31",
                                              "id": 3083,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "16201:1:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "src": "16181:21:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 3085,
                                          "nodeType": "ExpressionStatement",
                                          "src": "16181:21:20"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "id": 3093,
                              "nodeType": "IfStatement",
                              "src": "15770:531:20",
                              "trueBody": {
                                "id": 3060,
                                "nodeType": "Block",
                                "src": "15795:105:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 3054,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 3052,
                                        "name": "nfCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2992,
                                        "src": "15813:14:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 3053,
                                        "name": "nextCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3043,
                                        "src": "15830:16:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "15813:33:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3055,
                                    "nodeType": "ExpressionStatement",
                                    "src": "15813:33:20"
                                  },
                                  {
                                    "expression": {
                                      "id": 3058,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 3056,
                                        "name": "nfCollectionCount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2995,
                                        "src": "15864:17:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "hexValue": "31",
                                        "id": 3057,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "15884:1:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "15864:21:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3059,
                                    "nodeType": "ExpressionStatement",
                                    "src": "15864:21:20"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3002,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3000,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2998,
                            "src": "15391:1:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 3001,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2976,
                            "src": "15396:6:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15391:11:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3095,
                        "initializationExpression": {
                          "assignments": [
                            2998
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2998,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 3095,
                              "src": "15380:9:20",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2997,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "15380:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 2999,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "15380:9:20"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 3004,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "15404:3:20",
                            "subExpression": {
                              "id": 3003,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2998,
                              "src": "15406:1:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3005,
                          "nodeType": "ExpressionStatement",
                          "src": "15404:3:20"
                        },
                        "nodeType": "ForStatement",
                        "src": "15375:936:20"
                      },
                      {
                        "expression": {
                          "id": 3102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 3096,
                                "name": "_balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 875,
                                "src": "16321:9:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 3099,
                              "indexExpression": {
                                "id": 3097,
                                "name": "nfCollectionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2992,
                                "src": "16331:14:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "16321:25:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3100,
                            "indexExpression": {
                              "id": 3098,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2959,
                              "src": "16347:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "16321:29:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 3101,
                            "name": "nfCollectionCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2995,
                            "src": "16354:17:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16321:50:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3103,
                        "nodeType": "ExpressionStatement",
                        "src": "16321:50:20"
                      },
                      {
                        "expression": {
                          "id": 3108,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 3104,
                              "name": "_supplies",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 879,
                              "src": "16381:9:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 3106,
                            "indexExpression": {
                              "id": 3105,
                              "name": "nfCollectionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2992,
                              "src": "16391:14:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "16381:25:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 3107,
                            "name": "nfCollectionCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2995,
                            "src": "16410:17:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16381:46:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3109,
                        "nodeType": "ExpressionStatement",
                        "src": "16381:46:20"
                      },
                      {
                        "expression": {
                          "id": 3114,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 3110,
                              "name": "_nftBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1833,
                              "src": "16437:12:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3112,
                            "indexExpression": {
                              "id": 3111,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2959,
                              "src": "16450:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "16437:16:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 3113,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2976,
                            "src": "16457:6:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16437:26:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3115,
                        "nodeType": "ExpressionStatement",
                        "src": "16437:26:20"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 3117,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "16493:10:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 3118,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16493:12:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 3121,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16515: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": 3120,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "16507:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3119,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "16507:7:20",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3122,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16507:10:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 3123,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2959,
                              "src": "16519:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3124,
                              "name": "nftIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2962,
                              "src": "16523:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 3125,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2984,
                              "src": "16531:6:20",
                              "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": 3116,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1493,
                            "src": "16479: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": 3126,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16479:59:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3127,
                        "nodeType": "EmitStatement",
                        "src": "16474:64:20"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 3134,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 3128,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2959,
                                "src": "16552:2:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 3129,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isContract",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 671,
                              "src": "16552:13:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                                "typeString": "function (address) view returns (bool)"
                              }
                            },
                            "id": 3130,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16552:15:20",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 3132,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2959,
                                "src": "16595:2:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3131,
                              "name": "_isERC1155TokenReceiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4027,
                              "src": "16571:23:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                "typeString": "function (address) view returns (bool)"
                              }
                            },
                            "id": 3133,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16571:27:20",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "16552:46:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3147,
                        "nodeType": "IfStatement",
                        "src": "16548:140:20",
                        "trueBody": {
                          "id": 3146,
                          "nodeType": "Block",
                          "src": "16600:88:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 3138,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "16650: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": 3137,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "16642:7:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3136,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16642:7:20",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3139,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "16642:10:20",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 3140,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2959,
                                    "src": "16654:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 3141,
                                    "name": "nftIds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2962,
                                    "src": "16658:6:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 3142,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2984,
                                    "src": "16666:6:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "hexValue": "",
                                    "id": 3143,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16674:2:20",
                                    "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": 3135,
                                  "name": "_callOnERC1155BatchReceived",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1381,
                                  "src": "16614:27:20",
                                  "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": 3144,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16614:63:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3145,
                              "nodeType": "ExpressionStatement",
                              "src": "16614:63:20"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2957,
                    "nodeType": "StructuredDocumentation",
                    "src": "14904:162:20",
                    "text": " Unsafely mints a batch of Non-Fungible Tokens (ERC721-compatible).\n @dev See {IERC1155721InventoryMintable-batchMint(address,uint256[])}."
                  },
                  "id": 3149,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_batchMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2963,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2959,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3149,
                        "src": "15091:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2958,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15091:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2962,
                        "mutability": "mutable",
                        "name": "nftIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 3149,
                        "src": "15103:23:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2960,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "15103:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2961,
                          "nodeType": "ArrayTypeName",
                          "src": "15103:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15090:37:20"
                  },
                  "returnParameters": {
                    "id": 2964,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15137:0:20"
                  },
                  "scope": 4060,
                  "src": "15071:1623:20",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3241,
                    "nodeType": "Block",
                    "src": "16989:595:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3167,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3162,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3152,
                                "src": "17007:2:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 3165,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17021: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": 3164,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "17013:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3163,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17013:7:20",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3166,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17013:10:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "17007:16:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206d696e7420746f207a65726f",
                              "id": 3168,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17025:25:20",
                              "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": 3161,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "16999:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16999:52:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3170,
                        "nodeType": "ExpressionStatement",
                        "src": "16999:52:20"
                      },
                      {
                        "assignments": [
                          3172
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3172,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 3241,
                            "src": "17061:14:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3171,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "17061:7:20",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3175,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 3173,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "17078:10:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 3174,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17078:12:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17061:29:20"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 3176,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3154,
                              "src": "17104:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3177,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isFungibleToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1404,
                            "src": "17104:18:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (bool)"
                            }
                          },
                          "id": 3178,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17104:20:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "arguments": [
                              {
                                "id": 3188,
                                "name": "_collectionMaskLength",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 854,
                                "src": "17211:21:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 3186,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3154,
                                "src": "17189:2:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3187,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isNonFungibleToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1428,
                              "src": "17189: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": 3189,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17189:44:20",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 3211,
                            "nodeType": "Block",
                            "src": "17343:60:20",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "hexValue": "496e76656e746f72793a206e6f74206120746f6b656e206964",
                                      "id": 3208,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17364: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": 3207,
                                    "name": "revert",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -19,
                                      -19
                                    ],
                                    "referencedDeclaration": -19,
                                    "src": "17357:6:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (string memory) pure"
                                    }
                                  },
                                  "id": 3209,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17357:35:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 3210,
                                "nodeType": "ExpressionStatement",
                                "src": "17357:35:20"
                              }
                            ]
                          },
                          "id": 3212,
                          "nodeType": "IfStatement",
                          "src": "17185:218:20",
                          "trueBody": {
                            "id": 3206,
                            "nodeType": "Block",
                            "src": "17235:102:20",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 3191,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3152,
                                      "src": "17258:2:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 3192,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3154,
                                      "src": "17262:2:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 3193,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3156,
                                      "src": "17266:5:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 3194,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17273: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"
                                      }
                                    ],
                                    "id": 3190,
                                    "name": "_mintNFT",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3767,
                                    "src": "17249:8:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                      "typeString": "function (address,uint256,uint256,bool)"
                                    }
                                  },
                                  "id": 3195,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17249:30:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 3196,
                                "nodeType": "ExpressionStatement",
                                "src": "17249:30:20"
                              },
                              {
                                "eventCall": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 3200,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "17315: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": 3199,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "17307:7:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 3198,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "17307:7:20",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 3201,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17307:10:20",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    {
                                      "id": 3202,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3152,
                                      "src": "17319:2:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 3203,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3154,
                                      "src": "17323:2:20",
                                      "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": 3197,
                                    "name": "Transfer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4728,
                                    "src": "17298:8:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                      "typeString": "function (address,address,uint256)"
                                    }
                                  },
                                  "id": 3204,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17298:28:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 3205,
                                "nodeType": "EmitStatement",
                                "src": "17293:33:20"
                              }
                            ]
                          }
                        },
                        "id": 3213,
                        "nodeType": "IfStatement",
                        "src": "17100:303:20",
                        "trueBody": {
                          "id": 3185,
                          "nodeType": "Block",
                          "src": "17126:53:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3180,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3152,
                                    "src": "17154:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 3181,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3154,
                                    "src": "17158:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 3182,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3156,
                                    "src": "17162:5: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": 3179,
                                  "name": "_mintFungible",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3699,
                                  "src": "17140:13:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256)"
                                  }
                                },
                                "id": 3183,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17140:28:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3184,
                              "nodeType": "ExpressionStatement",
                              "src": "17140:28:20"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 3215,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3172,
                              "src": "17433:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 3218,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17449: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": 3217,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "17441:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3216,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "17441:7:20",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3219,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17441:10:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 3220,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3152,
                              "src": "17453:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3221,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3154,
                              "src": "17457:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3222,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3156,
                              "src": "17461:5:20",
                              "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": 3214,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1479,
                            "src": "17418: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": 3223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17418:49:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3224,
                        "nodeType": "EmitStatement",
                        "src": "17413:54:20"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 3225,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3152,
                              "src": "17481:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 3226,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 671,
                            "src": "17481:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 3227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17481:15:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3240,
                        "nodeType": "IfStatement",
                        "src": "17477:101:20",
                        "trueBody": {
                          "id": 3239,
                          "nodeType": "Block",
                          "src": "17498:80:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 3231,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "17543: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": 3230,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "17535:7:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3229,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "17535:7:20",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3232,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17535:10:20",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 3233,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3152,
                                    "src": "17547:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 3234,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3154,
                                    "src": "17551:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 3235,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3156,
                                    "src": "17555:5:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 3236,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3158,
                                    "src": "17562:4:20",
                                    "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": 3228,
                                  "name": "_callOnERC1155Received",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1347,
                                  "src": "17512:22:20",
                                  "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": 3237,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17512:55:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3238,
                              "nodeType": "ExpressionStatement",
                              "src": "17512:55:20"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3150,
                    "nodeType": "StructuredDocumentation",
                    "src": "16700:152:20",
                    "text": " Safely mints some token (ERC1155-compatible).\n @dev See {IERC1155721InventoryMintable-safeMint(address,uint256,uint256,bytes)}."
                  },
                  "id": 3242,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3159,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3152,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3242,
                        "src": "16885:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3151,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16885:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3154,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3242,
                        "src": "16905:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3153,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16905:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3156,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3242,
                        "src": "16925:13:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3155,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16925:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3158,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 3242,
                        "src": "16948:17:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3157,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "16948:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16875:96:20"
                  },
                  "returnParameters": {
                    "id": 3160,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16989:0:20"
                  },
                  "scope": 4060,
                  "src": "16857:727:20",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3462,
                    "nodeType": "Block",
                    "src": "17920:1939:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3262,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3257,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3245,
                                "src": "17938:2:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 3260,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17952: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": 3259,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "17944:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3258,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17944:7:20",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3261,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17944:10:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "17938:16:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206d696e7420746f207a65726f",
                              "id": 3263,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17956:25:20",
                              "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": 3256,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "17930:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3264,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17930:52:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3265,
                        "nodeType": "ExpressionStatement",
                        "src": "17930:52:20"
                      },
                      {
                        "assignments": [
                          3267
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3267,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 3462,
                            "src": "17992:14:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3266,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17992:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3270,
                        "initialValue": {
                          "expression": {
                            "id": 3268,
                            "name": "ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3248,
                            "src": "18009:3:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 3269,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "18009:10:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17992:27:20"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3275,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3272,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3267,
                                "src": "18037:6:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 3273,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3251,
                                  "src": "18047:6:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 3274,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "18047:13:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "18037:23:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a20696e636f6e73697374656e7420617272617973",
                              "id": 3276,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18062: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": 3271,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "18029:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3277,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18029:66:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3278,
                        "nodeType": "ExpressionStatement",
                        "src": "18029:66:20"
                      },
                      {
                        "assignments": [
                          3280
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3280,
                            "mutability": "mutable",
                            "name": "nfCollectionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 3462,
                            "src": "18106:22:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3279,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18106:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3281,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18106:22:20"
                      },
                      {
                        "assignments": [
                          3283
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3283,
                            "mutability": "mutable",
                            "name": "nfCollectionCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 3462,
                            "src": "18138:25:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3282,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18138:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3284,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18138:25:20"
                      },
                      {
                        "assignments": [
                          3286
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3286,
                            "mutability": "mutable",
                            "name": "nftsCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 3462,
                            "src": "18173:17:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3285,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18173:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3287,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18173:17:20"
                      },
                      {
                        "body": {
                          "id": 3403,
                          "nodeType": "Block",
                          "src": "18234:1173:20",
                          "statements": [
                            {
                              "assignments": [
                                3298
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3298,
                                  "mutability": "mutable",
                                  "name": "id",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3403,
                                  "src": "18248:10:20",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3297,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "18248:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3302,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 3299,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3248,
                                  "src": "18261:3:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 3301,
                                "indexExpression": {
                                  "id": 3300,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3289,
                                  "src": "18265:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "18261:6:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "18248:19:20"
                            },
                            {
                              "assignments": [
                                3304
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3304,
                                  "mutability": "mutable",
                                  "name": "value",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3403,
                                  "src": "18281:13:20",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3303,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "18281:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3308,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 3305,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3251,
                                  "src": "18297:6:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 3307,
                                "indexExpression": {
                                  "id": 3306,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3289,
                                  "src": "18304:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "18297:9:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "18281:25:20"
                            },
                            {
                              "condition": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 3309,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3298,
                                    "src": "18324:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3310,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "isFungibleToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1404,
                                  "src": "18324:18:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (bool)"
                                  }
                                },
                                "id": 3311,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18324:20:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "arguments": [
                                    {
                                      "id": 3321,
                                      "name": "_collectionMaskLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 854,
                                      "src": "18439:21:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 3319,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3298,
                                      "src": "18417:2:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3320,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "isNonFungibleToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1428,
                                    "src": "18417: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": 3322,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "18417:44:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 3400,
                                  "nodeType": "Block",
                                  "src": "19329:68:20",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "hexValue": "496e76656e746f72793a206e6f74206120746f6b656e206964",
                                            "id": 3397,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "19354: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": 3396,
                                          "name": "revert",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [
                                            -19,
                                            -19
                                          ],
                                          "referencedDeclaration": -19,
                                          "src": "19347:6:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                            "typeString": "function (string memory) pure"
                                          }
                                        },
                                        "id": 3398,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "19347:35:20",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 3399,
                                      "nodeType": "ExpressionStatement",
                                      "src": "19347:35:20"
                                    }
                                  ]
                                },
                                "id": 3401,
                                "nodeType": "IfStatement",
                                "src": "18413:984:20",
                                "trueBody": {
                                  "id": 3395,
                                  "nodeType": "Block",
                                  "src": "18463:860:20",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 3324,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3245,
                                            "src": "18490:2:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 3325,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3298,
                                            "src": "18494:2:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 3326,
                                            "name": "value",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3304,
                                            "src": "18498:5:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "hexValue": "74727565",
                                            "id": 3327,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "18505: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"
                                            }
                                          ],
                                          "id": 3323,
                                          "name": "_mintNFT",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3767,
                                          "src": "18481:8:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                            "typeString": "function (address,uint256,uint256,bool)"
                                          }
                                        },
                                        "id": 3328,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "18481:29:20",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 3329,
                                      "nodeType": "ExpressionStatement",
                                      "src": "18481:29:20"
                                    },
                                    {
                                      "eventCall": {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "hexValue": "30",
                                                "id": 3333,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "18550: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": 3332,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "18542:7:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 3331,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "18542:7:20",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 3334,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "18542:10:20",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            }
                                          },
                                          {
                                            "id": 3335,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3245,
                                            "src": "18554:2:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 3336,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3298,
                                            "src": "18558:2:20",
                                            "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": 3330,
                                          "name": "Transfer",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4728,
                                          "src": "18533:8:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                            "typeString": "function (address,address,uint256)"
                                          }
                                        },
                                        "id": 3337,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "18533:28:20",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 3338,
                                      "nodeType": "EmitStatement",
                                      "src": "18528:33:20"
                                    },
                                    {
                                      "assignments": [
                                        3340
                                      ],
                                      "declarations": [
                                        {
                                          "constant": false,
                                          "id": 3340,
                                          "mutability": "mutable",
                                          "name": "nextCollectionId",
                                          "nodeType": "VariableDeclaration",
                                          "scope": 3395,
                                          "src": "18579:24:20",
                                          "stateVariable": false,
                                          "storageLocation": "default",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "typeName": {
                                            "id": 3339,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "18579:7:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "visibility": "internal"
                                        }
                                      ],
                                      "id": 3345,
                                      "initialValue": {
                                        "arguments": [
                                          {
                                            "id": 3343,
                                            "name": "_collectionMaskLength",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 854,
                                            "src": "18634:21:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "id": 3341,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3298,
                                            "src": "18606:2:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 3342,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getNonFungibleCollection",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1445,
                                          "src": "18606: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": 3344,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "18606:50:20",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "VariableDeclarationStatement",
                                      "src": "18579:77:20"
                                    },
                                    {
                                      "condition": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3348,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 3346,
                                          "name": "nfCollectionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3280,
                                          "src": "18678:14:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "hexValue": "30",
                                          "id": 3347,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "18696:1:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "18678:19:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": {
                                        "id": 3393,
                                        "nodeType": "Block",
                                        "src": "18822:487:20",
                                        "statements": [
                                          {
                                            "condition": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 3360,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 3358,
                                                "name": "nextCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3340,
                                                "src": "18848:16:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "!=",
                                              "rightExpression": {
                                                "id": 3359,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3280,
                                                "src": "18868:14:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "18848:34:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "falseBody": {
                                              "id": 3391,
                                              "nodeType": "Block",
                                              "src": "19223:68:20",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "id": 3389,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "UnaryOperation",
                                                    "operator": "++",
                                                    "prefix": true,
                                                    "src": "19249:19:20",
                                                    "subExpression": {
                                                      "id": 3388,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 3283,
                                                      "src": "19251:17:20",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 3390,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "19249:19:20"
                                                }
                                              ]
                                            },
                                            "id": 3392,
                                            "nodeType": "IfStatement",
                                            "src": "18844:447:20",
                                            "trueBody": {
                                              "id": 3387,
                                              "nodeType": "Block",
                                              "src": "18884:333:20",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "id": 3367,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "baseExpression": {
                                                        "baseExpression": {
                                                          "id": 3361,
                                                          "name": "_balances",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 875,
                                                          "src": "18910:9:20",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                            "typeString": "mapping(uint256 => mapping(address => uint256))"
                                                          }
                                                        },
                                                        "id": 3364,
                                                        "indexExpression": {
                                                          "id": 3362,
                                                          "name": "nfCollectionId",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 3280,
                                                          "src": "18920:14:20",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "18910:25:20",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                          "typeString": "mapping(address => uint256)"
                                                        }
                                                      },
                                                      "id": 3365,
                                                      "indexExpression": {
                                                        "id": 3363,
                                                        "name": "to",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3245,
                                                        "src": "18936:2:20",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": true,
                                                      "nodeType": "IndexAccess",
                                                      "src": "18910:29:20",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                      "id": 3366,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 3283,
                                                      "src": "18943:17:20",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "18910:50:20",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 3368,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "18910:50:20"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 3373,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "baseExpression": {
                                                        "id": 3369,
                                                        "name": "_supplies",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 879,
                                                        "src": "18986:9:20",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                          "typeString": "mapping(uint256 => uint256)"
                                                        }
                                                      },
                                                      "id": 3371,
                                                      "indexExpression": {
                                                        "id": 3370,
                                                        "name": "nfCollectionId",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3280,
                                                        "src": "18996:14:20",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": true,
                                                      "nodeType": "IndexAccess",
                                                      "src": "18986:25:20",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                      "id": 3372,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 3283,
                                                      "src": "19015:17:20",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "18986:46:20",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 3374,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "18986:46:20"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 3377,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 3375,
                                                      "name": "nfCollectionId",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 3280,
                                                      "src": "19058:14:20",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "id": 3376,
                                                      "name": "nextCollectionId",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 3340,
                                                      "src": "19075:16:20",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "19058:33:20",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 3378,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "19058:33:20"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 3381,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 3379,
                                                      "name": "nftsCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 3286,
                                                      "src": "19117:9:20",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                      "id": 3380,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 3283,
                                                      "src": "19130:17:20",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "19117:30:20",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 3382,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "19117:30:20"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 3385,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 3383,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 3283,
                                                      "src": "19173:17:20",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "hexValue": "31",
                                                      "id": 3384,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "19193:1:20",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_1_by_1",
                                                        "typeString": "int_const 1"
                                                      },
                                                      "value": "1"
                                                    },
                                                    "src": "19173:21:20",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 3386,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "19173:21:20"
                                                }
                                              ]
                                            }
                                          }
                                        ]
                                      },
                                      "id": 3394,
                                      "nodeType": "IfStatement",
                                      "src": "18674:635:20",
                                      "trueBody": {
                                        "id": 3357,
                                        "nodeType": "Block",
                                        "src": "18699:117:20",
                                        "statements": [
                                          {
                                            "expression": {
                                              "id": 3351,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 3349,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3280,
                                                "src": "18721:14:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "id": 3350,
                                                "name": "nextCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3340,
                                                "src": "18738:16:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "18721:33:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 3352,
                                            "nodeType": "ExpressionStatement",
                                            "src": "18721:33:20"
                                          },
                                          {
                                            "expression": {
                                              "id": 3355,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 3353,
                                                "name": "nfCollectionCount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3283,
                                                "src": "18776:17:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "hexValue": "31",
                                                "id": 3354,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "18796:1:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "src": "18776:21:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 3356,
                                            "nodeType": "ExpressionStatement",
                                            "src": "18776:21:20"
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                }
                              },
                              "id": 3402,
                              "nodeType": "IfStatement",
                              "src": "18320:1077:20",
                              "trueBody": {
                                "id": 3318,
                                "nodeType": "Block",
                                "src": "18346:61:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 3313,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3245,
                                          "src": "18378:2:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 3314,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3298,
                                          "src": "18382:2:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 3315,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3304,
                                          "src": "18386:5: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": 3312,
                                        "name": "_mintFungible",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3699,
                                        "src": "18364:13:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,uint256,uint256)"
                                        }
                                      },
                                      "id": 3316,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "18364:28:20",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 3317,
                                    "nodeType": "ExpressionStatement",
                                    "src": "18364:28:20"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3291,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3289,
                            "src": "18216:1:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 3292,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3267,
                            "src": "18221:6:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18216:11:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3404,
                        "initializationExpression": {
                          "assignments": [
                            3289
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 3289,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 3404,
                              "src": "18205:9:20",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 3288,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "18205:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 3290,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "18205:9:20"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 3295,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "18229:3:20",
                            "subExpression": {
                              "id": 3294,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3289,
                              "src": "18231:1:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3296,
                          "nodeType": "ExpressionStatement",
                          "src": "18229:3:20"
                        },
                        "nodeType": "ForStatement",
                        "src": "18200:1207:20"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3407,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3405,
                            "name": "nfCollectionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3280,
                            "src": "19421:14:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 3406,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19439:1:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "19421:19:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3433,
                        "nodeType": "IfStatement",
                        "src": "19417:247:20",
                        "trueBody": {
                          "id": 3432,
                          "nodeType": "Block",
                          "src": "19442:222:20",
                          "statements": [
                            {
                              "expression": {
                                "id": 3414,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 3408,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 875,
                                      "src": "19456:9:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 3411,
                                    "indexExpression": {
                                      "id": 3409,
                                      "name": "nfCollectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3280,
                                      "src": "19466:14:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "19456:25:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3412,
                                  "indexExpression": {
                                    "id": 3410,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3245,
                                    "src": "19482:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "19456:29:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 3413,
                                  "name": "nfCollectionCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3283,
                                  "src": "19489:17:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19456:50:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3415,
                              "nodeType": "ExpressionStatement",
                              "src": "19456:50:20"
                            },
                            {
                              "expression": {
                                "id": 3420,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 3416,
                                    "name": "_supplies",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 879,
                                    "src": "19520:9:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 3418,
                                  "indexExpression": {
                                    "id": 3417,
                                    "name": "nfCollectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3280,
                                    "src": "19530:14:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "19520:25:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 3419,
                                  "name": "nfCollectionCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3283,
                                  "src": "19549:17:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19520:46:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3421,
                              "nodeType": "ExpressionStatement",
                              "src": "19520:46:20"
                            },
                            {
                              "expression": {
                                "id": 3424,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3422,
                                  "name": "nftsCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3286,
                                  "src": "19580:9:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 3423,
                                  "name": "nfCollectionCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3283,
                                  "src": "19593:17:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19580:30:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3425,
                              "nodeType": "ExpressionStatement",
                              "src": "19580:30:20"
                            },
                            {
                              "expression": {
                                "id": 3430,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 3426,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1833,
                                    "src": "19624:12:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3428,
                                  "indexExpression": {
                                    "id": 3427,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3245,
                                    "src": "19637:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "19624:16:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 3429,
                                  "name": "nftsCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3286,
                                  "src": "19644:9:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19624:29:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3431,
                              "nodeType": "ExpressionStatement",
                              "src": "19624:29:20"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 3435,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "19693:10:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 3436,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19693:12:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 3439,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "19715: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": 3438,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "19707:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3437,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "19707:7:20",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3440,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19707:10:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 3441,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3245,
                              "src": "19719:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3442,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3248,
                              "src": "19723:3:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 3443,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3251,
                              "src": "19728:6:20",
                              "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": 3434,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1493,
                            "src": "19679: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": 3444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19679:56:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3445,
                        "nodeType": "EmitStatement",
                        "src": "19674:61:20"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 3446,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3245,
                              "src": "19749:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 3447,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 671,
                            "src": "19749:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 3448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19749:15:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3461,
                        "nodeType": "IfStatement",
                        "src": "19745:108:20",
                        "trueBody": {
                          "id": 3460,
                          "nodeType": "Block",
                          "src": "19766:87:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 3452,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "19816: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": 3451,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "19808:7:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3450,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "19808:7:20",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3453,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "19808:10:20",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 3454,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3245,
                                    "src": "19820:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 3455,
                                    "name": "ids",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3248,
                                    "src": "19824:3:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 3456,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3251,
                                    "src": "19829:6:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 3457,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3253,
                                    "src": "19837:4:20",
                                    "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": 3449,
                                  "name": "_callOnERC1155BatchReceived",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1381,
                                  "src": "19780:27:20",
                                  "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": 3458,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19780:62:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3459,
                              "nodeType": "ExpressionStatement",
                              "src": "19780:62:20"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3243,
                    "nodeType": "StructuredDocumentation",
                    "src": "17590:168:20",
                    "text": " Safely mints a batch of tokens (ERC1155-compatible).\n @dev See {IERC1155721InventoryMintable-safeBatchMint(address,uint256[],uint256[],bytes)}."
                  },
                  "id": 3463,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeBatchMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3254,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3245,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3463,
                        "src": "17796:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3244,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17796:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3248,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 3463,
                        "src": "17816:20:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3246,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "17816:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3247,
                          "nodeType": "ArrayTypeName",
                          "src": "17816:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3251,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 3463,
                        "src": "17846:23:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3249,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "17846:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3250,
                          "nodeType": "ArrayTypeName",
                          "src": "17846:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3253,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 3463,
                        "src": "17879:17:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3252,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "17879:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17786:116:20"
                  },
                  "returnParameters": {
                    "id": 3255,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17920:0:20"
                  },
                  "scope": 4060,
                  "src": "17763:2096:20",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3648,
                    "nodeType": "Block",
                    "src": "20201:1354:20",
                    "statements": [
                      {
                        "assignments": [
                          3479
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3479,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 3648,
                            "src": "20211:14:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3478,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "20211:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3482,
                        "initialValue": {
                          "expression": {
                            "id": 3480,
                            "name": "recipients",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3467,
                            "src": "20228:10:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 3481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "20228:17:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20211:34:20"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 3492,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3487,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3484,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3479,
                                  "src": "20263:6:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 3485,
                                    "name": "ids",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3470,
                                    "src": "20273:3:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                      "typeString": "uint256[] calldata"
                                    }
                                  },
                                  "id": 3486,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "20273:10:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "20263:20:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3491,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3488,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3479,
                                  "src": "20287:6:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 3489,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3473,
                                    "src": "20297:6:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                      "typeString": "uint256[] calldata"
                                    }
                                  },
                                  "id": 3490,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "20297:13:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "20287:23:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "20263:47:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a20696e636f6e73697374656e7420617272617973",
                              "id": 3493,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20312: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": 3483,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "20255:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20255:90:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3495,
                        "nodeType": "ExpressionStatement",
                        "src": "20255:90:20"
                      },
                      {
                        "assignments": [
                          3497
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3497,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 3648,
                            "src": "20356:14:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3496,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "20356:7:20",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3500,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 3498,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "20373:10:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 3499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20373:12:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20356:29:20"
                      },
                      {
                        "body": {
                          "id": 3646,
                          "nodeType": "Block",
                          "src": "20429:1120:20",
                          "statements": [
                            {
                              "assignments": [
                                3511
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3511,
                                  "mutability": "mutable",
                                  "name": "to",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3646,
                                  "src": "20443:10:20",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 3510,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "20443:7:20",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3515,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 3512,
                                  "name": "recipients",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3467,
                                  "src": "20456:10:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 3514,
                                "indexExpression": {
                                  "id": 3513,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3502,
                                  "src": "20467:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "20456:13:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "20443:26:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 3522,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 3517,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3511,
                                      "src": "20491:2:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 3520,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "20505: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": 3519,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "20497:7:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 3518,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "20497:7:20",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 3521,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "20497:10:20",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "src": "20491:16:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "496e76656e746f72793a206d696e7420746f207a65726f",
                                    "id": 3523,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "20509:25:20",
                                    "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": 3516,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "20483:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 3524,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20483:52:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3525,
                              "nodeType": "ExpressionStatement",
                              "src": "20483:52:20"
                            },
                            {
                              "assignments": [
                                3527
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3527,
                                  "mutability": "mutable",
                                  "name": "id",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3646,
                                  "src": "20549:10:20",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3526,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "20549:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3531,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 3528,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3470,
                                  "src": "20562:3:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                    "typeString": "uint256[] calldata"
                                  }
                                },
                                "id": 3530,
                                "indexExpression": {
                                  "id": 3529,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3502,
                                  "src": "20566:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "20562:6:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "20549:19:20"
                            },
                            {
                              "assignments": [
                                3533
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3533,
                                  "mutability": "mutable",
                                  "name": "value",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3646,
                                  "src": "20582:13:20",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3532,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "20582:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3537,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 3534,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3473,
                                  "src": "20598:6:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                    "typeString": "uint256[] calldata"
                                  }
                                },
                                "id": 3536,
                                "indexExpression": {
                                  "id": 3535,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3502,
                                  "src": "20605:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "20598:9:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "20582:25:20"
                            },
                            {
                              "condition": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 3538,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3527,
                                    "src": "20625:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3539,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "isFungibleToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1404,
                                  "src": "20625:18:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (bool)"
                                  }
                                },
                                "id": 3540,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20625:20:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "arguments": [
                                    {
                                      "id": 3577,
                                      "name": "_collectionMaskLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 854,
                                      "src": "20946:21:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 3575,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3527,
                                      "src": "20924:2:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3576,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "isNonFungibleToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1428,
                                    "src": "20924: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": 3578,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "20924:44:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 3643,
                                  "nodeType": "Block",
                                  "src": "21471:68:20",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "hexValue": "496e76656e746f72793a206e6f74206120746f6b656e206964",
                                            "id": 3640,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "21496: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": 3639,
                                          "name": "revert",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [
                                            -19,
                                            -19
                                          ],
                                          "referencedDeclaration": -19,
                                          "src": "21489:6:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                            "typeString": "function (string memory) pure"
                                          }
                                        },
                                        "id": 3641,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "21489:35:20",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 3642,
                                      "nodeType": "ExpressionStatement",
                                      "src": "21489:35:20"
                                    }
                                  ]
                                },
                                "id": 3644,
                                "nodeType": "IfStatement",
                                "src": "20920:619:20",
                                "trueBody": {
                                  "id": 3638,
                                  "nodeType": "Block",
                                  "src": "20970:495:20",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 3580,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3511,
                                            "src": "20997:2:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 3581,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3527,
                                            "src": "21001:2:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 3582,
                                            "name": "value",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3533,
                                            "src": "21005:5:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "hexValue": "66616c7365",
                                            "id": 3583,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "21012: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"
                                            }
                                          ],
                                          "id": 3579,
                                          "name": "_mintNFT",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3767,
                                          "src": "20988:8:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                            "typeString": "function (address,uint256,uint256,bool)"
                                          }
                                        },
                                        "id": 3584,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "20988:30:20",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 3585,
                                      "nodeType": "ExpressionStatement",
                                      "src": "20988:30:20"
                                    },
                                    {
                                      "eventCall": {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "hexValue": "30",
                                                "id": 3589,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "21058: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": 3588,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "21050:7:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 3587,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "21050:7:20",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 3590,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "21050:10:20",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            }
                                          },
                                          {
                                            "id": 3591,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3511,
                                            "src": "21062:2:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 3592,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3527,
                                            "src": "21066:2:20",
                                            "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": 3586,
                                          "name": "Transfer",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4728,
                                          "src": "21041:8:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                            "typeString": "function (address,address,uint256)"
                                          }
                                        },
                                        "id": 3593,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "21041:28:20",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 3594,
                                      "nodeType": "EmitStatement",
                                      "src": "21036:33:20"
                                    },
                                    {
                                      "eventCall": {
                                        "arguments": [
                                          {
                                            "id": 3596,
                                            "name": "sender",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3497,
                                            "src": "21107:6:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "hexValue": "30",
                                                "id": 3599,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "21123: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": 3598,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "21115:7:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 3597,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "21115:7:20",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 3600,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "21115:10:20",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            }
                                          },
                                          {
                                            "id": 3601,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3511,
                                            "src": "21127:2:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 3602,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3527,
                                            "src": "21131:2:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "hexValue": "31",
                                            "id": 3603,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "21135:1:20",
                                            "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": 3595,
                                          "name": "TransferSingle",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1479,
                                          "src": "21092: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": 3604,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "21092:45:20",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 3605,
                                      "nodeType": "EmitStatement",
                                      "src": "21087:50:20"
                                    },
                                    {
                                      "condition": {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "expression": {
                                            "id": 3606,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3511,
                                            "src": "21159:2:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "id": 3607,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "isContract",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 671,
                                          "src": "21159:13:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                                            "typeString": "function (address) view returns (bool)"
                                          }
                                        },
                                        "id": 3608,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "21159:15:20",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "id": 3637,
                                      "nodeType": "IfStatement",
                                      "src": "21155:296:20",
                                      "trueBody": {
                                        "id": 3636,
                                        "nodeType": "Block",
                                        "src": "21176:275:20",
                                        "statements": [
                                          {
                                            "condition": {
                                              "arguments": [
                                                {
                                                  "id": 3610,
                                                  "name": "to",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3511,
                                                  "src": "21226:2:20",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                ],
                                                "id": 3609,
                                                "name": "_isERC1155TokenReceiver",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4027,
                                                "src": "21202:23:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                                  "typeString": "function (address) view returns (bool)"
                                                }
                                              },
                                              "id": 3611,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "21202:27:20",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "falseBody": {
                                              "id": 3634,
                                              "nodeType": "Block",
                                              "src": "21337:96:20",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "hexValue": "30",
                                                            "id": 3627,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "21393: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": 3626,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "lValueRequested": false,
                                                          "nodeType": "ElementaryTypeNameExpression",
                                                          "src": "21385:7:20",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                          },
                                                          "typeName": {
                                                            "id": 3625,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "21385:7:20",
                                                            "typeDescriptions": {}
                                                          }
                                                        },
                                                        "id": 3628,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "21385:10:20",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address_payable",
                                                          "typeString": "address payable"
                                                        }
                                                      },
                                                      {
                                                        "id": 3629,
                                                        "name": "to",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3511,
                                                        "src": "21397:2:20",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      {
                                                        "id": 3630,
                                                        "name": "id",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3527,
                                                        "src": "21401:2:20",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      {
                                                        "id": 3631,
                                                        "name": "data",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3475,
                                                        "src": "21405:4:20",
                                                        "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": 3624,
                                                      "name": "_callOnERC721Received",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4059,
                                                      "src": "21363:21:20",
                                                      "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": 3632,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "21363:47:20",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_tuple$__$",
                                                      "typeString": "tuple()"
                                                    }
                                                  },
                                                  "id": 3633,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "21363:47:20"
                                                }
                                              ]
                                            },
                                            "id": 3635,
                                            "nodeType": "IfStatement",
                                            "src": "21198:235:20",
                                            "trueBody": {
                                              "id": 3623,
                                              "nodeType": "Block",
                                              "src": "21231:100:20",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "hexValue": "30",
                                                            "id": 3615,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "21288: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": 3614,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "lValueRequested": false,
                                                          "nodeType": "ElementaryTypeNameExpression",
                                                          "src": "21280:7:20",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                          },
                                                          "typeName": {
                                                            "id": 3613,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "21280:7:20",
                                                            "typeDescriptions": {}
                                                          }
                                                        },
                                                        "id": 3616,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "21280:10:20",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address_payable",
                                                          "typeString": "address payable"
                                                        }
                                                      },
                                                      {
                                                        "id": 3617,
                                                        "name": "to",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3511,
                                                        "src": "21292:2:20",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      {
                                                        "id": 3618,
                                                        "name": "id",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3527,
                                                        "src": "21296:2:20",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      {
                                                        "hexValue": "31",
                                                        "id": 3619,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "21300:1:20",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_1_by_1",
                                                          "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                      },
                                                      {
                                                        "id": 3620,
                                                        "name": "data",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3475,
                                                        "src": "21303:4:20",
                                                        "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": 3612,
                                                      "name": "_callOnERC1155Received",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 1347,
                                                      "src": "21257:22:20",
                                                      "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": 3621,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "21257:51:20",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_tuple$__$",
                                                      "typeString": "tuple()"
                                                    }
                                                  },
                                                  "id": 3622,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "21257:51:20"
                                                }
                                              ]
                                            }
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                }
                              },
                              "id": 3645,
                              "nodeType": "IfStatement",
                              "src": "20621:918:20",
                              "trueBody": {
                                "id": 3574,
                                "nodeType": "Block",
                                "src": "20647:267:20",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 3542,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3511,
                                          "src": "20679:2:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 3543,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3527,
                                          "src": "20683:2:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 3544,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3533,
                                          "src": "20687:5: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": 3541,
                                        "name": "_mintFungible",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3699,
                                        "src": "20665:13:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,uint256,uint256)"
                                        }
                                      },
                                      "id": 3545,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "20665:28:20",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 3546,
                                    "nodeType": "ExpressionStatement",
                                    "src": "20665:28:20"
                                  },
                                  {
                                    "eventCall": {
                                      "arguments": [
                                        {
                                          "id": 3548,
                                          "name": "sender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3497,
                                          "src": "20731:6:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "hexValue": "30",
                                              "id": 3551,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "20747: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": 3550,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "20739:7:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": {
                                              "id": 3549,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "20739:7:20",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 3552,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "20739:10:20",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        },
                                        {
                                          "id": 3553,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3511,
                                          "src": "20751:2:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 3554,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3527,
                                          "src": "20755:2:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 3555,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3533,
                                          "src": "20759:5:20",
                                          "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": 3547,
                                        "name": "TransferSingle",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1479,
                                        "src": "20716: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": 3556,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "20716:49:20",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 3557,
                                    "nodeType": "EmitStatement",
                                    "src": "20711:54:20"
                                  },
                                  {
                                    "condition": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "id": 3558,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3511,
                                          "src": "20787:2:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "id": 3559,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "isContract",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 671,
                                        "src": "20787:13:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                                          "typeString": "function (address) view returns (bool)"
                                        }
                                      },
                                      "id": 3560,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "20787:15:20",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 3573,
                                    "nodeType": "IfStatement",
                                    "src": "20783:117:20",
                                    "trueBody": {
                                      "id": 3572,
                                      "nodeType": "Block",
                                      "src": "20804:96:20",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "hexValue": "30",
                                                    "id": 3564,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "20857: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": 3563,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "20849:7:20",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                  },
                                                  "typeName": {
                                                    "id": 3562,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "20849:7:20",
                                                    "typeDescriptions": {}
                                                  }
                                                },
                                                "id": 3565,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "20849:10:20",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address_payable",
                                                  "typeString": "address payable"
                                                }
                                              },
                                              {
                                                "id": 3566,
                                                "name": "to",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3511,
                                                "src": "20861:2:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "id": 3567,
                                                "name": "id",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3527,
                                                "src": "20865:2:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "id": 3568,
                                                "name": "value",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3533,
                                                "src": "20869:5:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "id": 3569,
                                                "name": "data",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3475,
                                                "src": "20876:4:20",
                                                "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": 3561,
                                              "name": "_callOnERC1155Received",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1347,
                                              "src": "20826:22:20",
                                              "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": 3570,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "20826:55:20",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 3571,
                                          "nodeType": "ExpressionStatement",
                                          "src": "20826:55:20"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3506,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3504,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3502,
                            "src": "20411:1:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 3505,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3479,
                            "src": "20416:6:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20411:11:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3647,
                        "initializationExpression": {
                          "assignments": [
                            3502
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 3502,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 3647,
                              "src": "20400:9:20",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 3501,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "20400:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 3503,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "20400:9:20"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 3508,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "20424:3:20",
                            "subExpression": {
                              "id": 3507,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3502,
                              "src": "20426:1:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3509,
                          "nodeType": "ExpressionStatement",
                          "src": "20424:3:20"
                        },
                        "nodeType": "ForStatement",
                        "src": "20395:1154:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3464,
                    "nodeType": "StructuredDocumentation",
                    "src": "19865:159:20",
                    "text": " Safely mints some tokens to a list of recipients.\n @dev See {IERC1155721Deliverable-safeDeliver(address[],uint256[],uint256[],bytes)}."
                  },
                  "id": 3649,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeDeliver",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3476,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3467,
                        "mutability": "mutable",
                        "name": "recipients",
                        "nodeType": "VariableDeclaration",
                        "scope": 3649,
                        "src": "20060:29:20",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3465,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "20060:7:20",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 3466,
                          "nodeType": "ArrayTypeName",
                          "src": "20060:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3470,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 3649,
                        "src": "20099:22:20",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3468,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "20099:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3469,
                          "nodeType": "ArrayTypeName",
                          "src": "20099:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3473,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 3649,
                        "src": "20131:25:20",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3471,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "20131:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3472,
                          "nodeType": "ArrayTypeName",
                          "src": "20131:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3475,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 3649,
                        "src": "20166:19:20",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3474,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "20166:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20050:141:20"
                  },
                  "returnParameters": {
                    "id": 3477,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "20201:0:20"
                  },
                  "scope": 4060,
                  "src": "20029:1526:20",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3698,
                    "nodeType": "Block",
                    "src": "21791:336:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3661,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3659,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3655,
                                "src": "21809:5:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3660,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "21818:1:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "21809:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207a65726f2076616c7565",
                              "id": 3662,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21821: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": 3658,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "21801:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3663,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21801:44:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3664,
                        "nodeType": "ExpressionStatement",
                        "src": "21801:44:20"
                      },
                      {
                        "assignments": [
                          3666
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3666,
                            "mutability": "mutable",
                            "name": "supply",
                            "nodeType": "VariableDeclaration",
                            "scope": 3698,
                            "src": "21855:14:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3665,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "21855:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3670,
                        "initialValue": {
                          "baseExpression": {
                            "id": 3667,
                            "name": "_supplies",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 879,
                            "src": "21872:9:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 3669,
                          "indexExpression": {
                            "id": 3668,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3653,
                            "src": "21882:2:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "21872:13:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21855:30:20"
                      },
                      {
                        "assignments": [
                          3672
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3672,
                            "mutability": "mutable",
                            "name": "newSupply",
                            "nodeType": "VariableDeclaration",
                            "scope": 3698,
                            "src": "21895:17:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3671,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "21895:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3676,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3673,
                            "name": "supply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3666,
                            "src": "21915:6:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 3674,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3655,
                            "src": "21924:5:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21915:14:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21895:34:20"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3680,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3678,
                                "name": "newSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3672,
                                "src": "21947:9:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "id": 3679,
                                "name": "supply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3666,
                                "src": "21959:6:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "21947:18:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a20737570706c79206f766572666c6f77",
                              "id": 3681,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21967:28:20",
                              "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": 3677,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "21939:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3682,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21939:57:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3683,
                        "nodeType": "ExpressionStatement",
                        "src": "21939:57:20"
                      },
                      {
                        "expression": {
                          "id": 3688,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 3684,
                              "name": "_supplies",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 879,
                              "src": "22006:9:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 3686,
                            "indexExpression": {
                              "id": 3685,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3653,
                              "src": "22016:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "22006:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 3687,
                            "name": "newSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3672,
                            "src": "22022:9:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22006:25:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3689,
                        "nodeType": "ExpressionStatement",
                        "src": "22006:25:20"
                      },
                      {
                        "expression": {
                          "id": 3696,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 3690,
                                "name": "_balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 875,
                                "src": "22094:9:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 3693,
                              "indexExpression": {
                                "id": 3691,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3653,
                                "src": "22104:2:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "22094:13:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3694,
                            "indexExpression": {
                              "id": 3692,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3651,
                              "src": "22108:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "22094:17:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 3695,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3655,
                            "src": "22115:5:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22094:26:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3697,
                        "nodeType": "ExpressionStatement",
                        "src": "22094:26:20"
                      }
                    ]
                  },
                  "id": 3699,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mintFungible",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3656,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3651,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3699,
                        "src": "21722:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3650,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "21722:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3653,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3699,
                        "src": "21742:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3652,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21742:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3655,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3699,
                        "src": "21762:13:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3654,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21762:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21712:69:20"
                  },
                  "returnParameters": {
                    "id": 3657,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21791:0:20"
                  },
                  "scope": 4060,
                  "src": "21690:437:20",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3766,
                    "nodeType": "Block",
                    "src": "22251:565:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3713,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3711,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3705,
                                "src": "22269:5:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 3712,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "22278:1:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "22269:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a2077726f6e67204e46542076616c7565",
                              "id": 3714,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "22281: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": 3710,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "22261:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3715,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22261:49:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3716,
                        "nodeType": "ExpressionStatement",
                        "src": "22261:49:20"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3722,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "baseExpression": {
                                  "id": 3718,
                                  "name": "_owners",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 883,
                                  "src": "22328:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 3720,
                                "indexExpression": {
                                  "id": 3719,
                                  "name": "id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3703,
                                  "src": "22336:2:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "22328:11:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3721,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "22343:1:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "22328:16:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206578697374696e672f6275726e74204e4654",
                              "id": 3723,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "22346:31:20",
                              "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": 3717,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "22320:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3724,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22320:58:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3725,
                        "nodeType": "ExpressionStatement",
                        "src": "22320:58:20"
                      },
                      {
                        "expression": {
                          "id": 3736,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 3726,
                              "name": "_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 883,
                              "src": "22389:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 3728,
                            "indexExpression": {
                              "id": 3727,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3703,
                              "src": "22397:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "22389:11:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 3733,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3701,
                                    "src": "22419:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3732,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "22411:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 3731,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "22411:7:20",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3734,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "22411:11:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 3730,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "22403:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 3729,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "22403:7:20",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 3735,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "22403:20:20",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22389:34:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3737,
                        "nodeType": "ExpressionStatement",
                        "src": "22389:34:20"
                      },
                      {
                        "condition": {
                          "id": 3739,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "22438:8:20",
                          "subExpression": {
                            "id": 3738,
                            "name": "isBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3707,
                            "src": "22439:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3765,
                        "nodeType": "IfStatement",
                        "src": "22434:376:20",
                        "trueBody": {
                          "id": 3764,
                          "nodeType": "Block",
                          "src": "22448:362:20",
                          "statements": [
                            {
                              "assignments": [
                                3741
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3741,
                                  "mutability": "mutable",
                                  "name": "collectionId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3764,
                                  "src": "22462:20:20",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3740,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "22462:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3746,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 3744,
                                    "name": "_collectionMaskLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 854,
                                    "src": "22513:21:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 3742,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3703,
                                    "src": "22485:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3743,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getNonFungibleCollection",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1445,
                                  "src": "22485: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": 3745,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "22485:50:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "22462:73:20"
                            },
                            {
                              "expression": {
                                "id": 3750,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "22699:25:20",
                                "subExpression": {
                                  "baseExpression": {
                                    "id": 3747,
                                    "name": "_supplies",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 879,
                                    "src": "22701:9:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 3749,
                                  "indexExpression": {
                                    "id": 3748,
                                    "name": "collectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3741,
                                    "src": "22711:12:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "22701:23:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3751,
                              "nodeType": "ExpressionStatement",
                              "src": "22699:25:20"
                            },
                            {
                              "expression": {
                                "id": 3757,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "22738:29:20",
                                "subExpression": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 3752,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 875,
                                      "src": "22740:9:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 3754,
                                    "indexExpression": {
                                      "id": 3753,
                                      "name": "collectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3741,
                                      "src": "22750:12:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22740:23:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3756,
                                  "indexExpression": {
                                    "id": 3755,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3701,
                                    "src": "22764:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "22740:27:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3758,
                              "nodeType": "ExpressionStatement",
                              "src": "22738:29:20"
                            },
                            {
                              "expression": {
                                "id": 3762,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "22781:18:20",
                                "subExpression": {
                                  "baseExpression": {
                                    "id": 3759,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1833,
                                    "src": "22783:12:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3761,
                                  "indexExpression": {
                                    "id": 3760,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3701,
                                    "src": "22796:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "22783:16:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3763,
                              "nodeType": "ExpressionStatement",
                              "src": "22781:18:20"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 3767,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mintNFT",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3708,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3701,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3767,
                        "src": "22160:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3700,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22160:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3703,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3767,
                        "src": "22180:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3702,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22180:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3705,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3767,
                        "src": "22200:13:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3704,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22200:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3707,
                        "mutability": "mutable",
                        "name": "isBatch",
                        "nodeType": "VariableDeclaration",
                        "scope": 3767,
                        "src": "22223:12:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3706,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "22223:4:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22150:91:20"
                  },
                  "returnParameters": {
                    "id": 3709,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22251:0:20"
                  },
                  "scope": 4060,
                  "src": "22133:683:20",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3830,
                    "nodeType": "Block",
                    "src": "22974:423:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3781,
                              "name": "operatable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3777,
                              "src": "22992:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d617070726f7665642073656e646572",
                              "id": 3782,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23004: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": 3780,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "22984:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3783,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22984:53:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3784,
                        "nodeType": "ExpressionStatement",
                        "src": "22984:53:20"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3788,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3786,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3775,
                                "src": "23055:5:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3787,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "23064:1:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "23055:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207a65726f2076616c7565",
                              "id": 3789,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23067: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": 3785,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "23047:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3790,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23047:44:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3791,
                        "nodeType": "ExpressionStatement",
                        "src": "23047:44:20"
                      },
                      {
                        "assignments": [
                          3793
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3793,
                            "mutability": "mutable",
                            "name": "balance",
                            "nodeType": "VariableDeclaration",
                            "scope": 3830,
                            "src": "23101:15:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3792,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "23101:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3799,
                        "initialValue": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 3794,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 875,
                              "src": "23119:9:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 3796,
                            "indexExpression": {
                              "id": 3795,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3773,
                              "src": "23129:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "23119:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 3798,
                          "indexExpression": {
                            "id": 3797,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3769,
                            "src": "23133:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "23119:19:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "23101:37:20"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3803,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3801,
                                "name": "balance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3793,
                                "src": "23156:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 3802,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3775,
                                "src": "23167:5:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "23156:16:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365",
                              "id": 3804,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23174: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": 3800,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "23148:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3805,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23148:58:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3806,
                        "nodeType": "ExpressionStatement",
                        "src": "23148:58:20"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3809,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3807,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3769,
                            "src": "23220:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 3808,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3771,
                            "src": "23228:2:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "23220:10:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3829,
                        "nodeType": "IfStatement",
                        "src": "23216:175:20",
                        "trueBody": {
                          "id": 3828,
                          "nodeType": "Block",
                          "src": "23232:159:20",
                          "statements": [
                            {
                              "expression": {
                                "id": 3818,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 3810,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 875,
                                      "src": "23246:9:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 3813,
                                    "indexExpression": {
                                      "id": 3811,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3773,
                                      "src": "23256:2:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "23246:13:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3814,
                                  "indexExpression": {
                                    "id": 3812,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3769,
                                    "src": "23260:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "23246:19:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3817,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 3815,
                                    "name": "balance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3793,
                                    "src": "23268:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 3816,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3775,
                                    "src": "23278:5:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "23268:15:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "23246:37:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3819,
                              "nodeType": "ExpressionStatement",
                              "src": "23246:37:20"
                            },
                            {
                              "expression": {
                                "id": 3826,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 3820,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 875,
                                      "src": "23354:9:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 3823,
                                    "indexExpression": {
                                      "id": 3821,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3773,
                                      "src": "23364:2:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "23354:13:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3824,
                                  "indexExpression": {
                                    "id": 3822,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3771,
                                    "src": "23368:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "23354:17:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 3825,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3775,
                                  "src": "23375:5:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "23354:26:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3827,
                              "nodeType": "ExpressionStatement",
                              "src": "23354:26:20"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 3831,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferFungible",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3778,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3769,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3831,
                        "src": "22858:12:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3768,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22858:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3771,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3831,
                        "src": "22880:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3770,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22880:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3773,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3831,
                        "src": "22900:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3772,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22900:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3775,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3831,
                        "src": "22920:13:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3774,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22920:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3777,
                        "mutability": "mutable",
                        "name": "operatable",
                        "nodeType": "VariableDeclaration",
                        "scope": 3831,
                        "src": "22943:15:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3776,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "22943:4:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22848:116:20"
                  },
                  "returnParameters": {
                    "id": 3779,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22974:0:20"
                  },
                  "scope": 4060,
                  "src": "22822:575:20",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3925,
                    "nodeType": "Block",
                    "src": "23580:591:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3849,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3847,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3839,
                                "src": "23598:5:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 3848,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "23607:1:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "23598:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a2077726f6e67204e46542076616c7565",
                              "id": 3850,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23610: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": 3846,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "23590:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3851,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23590:49:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3852,
                        "nodeType": "ExpressionStatement",
                        "src": "23590:49:20"
                      },
                      {
                        "assignments": [
                          3854
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3854,
                            "mutability": "mutable",
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 3925,
                            "src": "23649:13:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3853,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "23649:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3858,
                        "initialValue": {
                          "baseExpression": {
                            "id": 3855,
                            "name": "_owners",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 883,
                            "src": "23665:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 3857,
                          "indexExpression": {
                            "id": 3856,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3837,
                            "src": "23673:2:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "23665:11:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "23649:27:20"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3868,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3860,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3833,
                                "src": "23694:4:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 3865,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3854,
                                        "src": "23718:5:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 3864,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "23710:7:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint160_$",
                                        "typeString": "type(uint160)"
                                      },
                                      "typeName": {
                                        "id": 3863,
                                        "name": "uint160",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "23710:7:20",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3866,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "23710:14:20",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "id": 3862,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "23702:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3861,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "23702:7:20",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3867,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23702:23:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "23694:31:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d6f776e6564204e4654",
                              "id": 3869,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23727: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": 3859,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "23686:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3870,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23686:68:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3871,
                        "nodeType": "ExpressionStatement",
                        "src": "23686:68:20"
                      },
                      {
                        "condition": {
                          "id": 3873,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "23768:11:20",
                          "subExpression": {
                            "id": 3872,
                            "name": "operatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3841,
                            "src": "23769:10:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3892,
                        "nodeType": "IfStatement",
                        "src": "23764:163:20",
                        "trueBody": {
                          "id": 3891,
                          "nodeType": "Block",
                          "src": "23781:146:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 3887,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 3879,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 3877,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 3875,
                                              "name": "owner",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3854,
                                              "src": "23804:5:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "&",
                                            "rightExpression": {
                                              "id": 3876,
                                              "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1825,
                                              "src": "23812:26:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "23804:34:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "hexValue": "30",
                                            "id": 3878,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "23842:1:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "23804:39:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 3880,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "23803:41:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 3886,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 3881,
                                          "name": "_msgSender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 312,
                                          "src": "23848:10:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                            "typeString": "function () view returns (address payable)"
                                          }
                                        },
                                        "id": 3882,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "23848:12:20",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "baseExpression": {
                                          "id": 3883,
                                          "name": "_nftApprovals",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1837,
                                          "src": "23864:13:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                            "typeString": "mapping(uint256 => address)"
                                          }
                                        },
                                        "id": 3885,
                                        "indexExpression": {
                                          "id": 3884,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3837,
                                          "src": "23878:2:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "23864:17:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "23848:33:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "23803:78:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "496e76656e746f72793a206e6f6e2d617070726f7665642073656e646572",
                                    "id": 3888,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "23883: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": 3874,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "23795:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 3889,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23795:121:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3890,
                              "nodeType": "ExpressionStatement",
                              "src": "23795:121:20"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 3903,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 3893,
                              "name": "_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 883,
                              "src": "23936:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 3895,
                            "indexExpression": {
                              "id": 3894,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3837,
                              "src": "23944:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "23936:11:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 3900,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3835,
                                    "src": "23966:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3899,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "23958:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 3898,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "23958:7:20",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3901,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23958:11:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 3897,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "23950:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 3896,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "23950:7:20",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 3902,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "23950:20:20",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "23936:34:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3904,
                        "nodeType": "ExpressionStatement",
                        "src": "23936:34:20"
                      },
                      {
                        "condition": {
                          "id": 3906,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "23984:8:20",
                          "subExpression": {
                            "id": 3905,
                            "name": "isBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3843,
                            "src": "23985:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3924,
                        "nodeType": "IfStatement",
                        "src": "23980:185:20",
                        "trueBody": {
                          "id": 3923,
                          "nodeType": "Block",
                          "src": "23994:171:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3908,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3833,
                                    "src": "24035:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 3909,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3835,
                                    "src": "24041:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "hexValue": "31",
                                    "id": 3910,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24045:1:20",
                                    "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": 3907,
                                  "name": "_transferNFTUpdateBalances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3953,
                                  "src": "24008:26:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 3911,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24008:39:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3912,
                              "nodeType": "ExpressionStatement",
                              "src": "24008:39:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3914,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3833,
                                    "src": "24090:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 3915,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3835,
                                    "src": "24096:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 3918,
                                        "name": "_collectionMaskLength",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 854,
                                        "src": "24128:21:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 3916,
                                        "name": "id",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3837,
                                        "src": "24100:2:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 3917,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "getNonFungibleCollection",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1445,
                                      "src": "24100: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": 3919,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "24100:50:20",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "hexValue": "31",
                                    "id": 3920,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24152:1:20",
                                    "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": 3913,
                                  "name": "_transferNFTUpdateCollection",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3986,
                                  "src": "24061:28:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256)"
                                  }
                                },
                                "id": 3921,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24061:93:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3922,
                              "nodeType": "ExpressionStatement",
                              "src": "24061:93:20"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 3926,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferNFT",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3844,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3833,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3926,
                        "src": "23434:12:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3832,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "23434:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3835,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3926,
                        "src": "23456:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3834,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "23456:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3837,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3926,
                        "src": "23476:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3836,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23476:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3839,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3926,
                        "src": "23496:13:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3838,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23496:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3841,
                        "mutability": "mutable",
                        "name": "operatable",
                        "nodeType": "VariableDeclaration",
                        "scope": 3926,
                        "src": "23519:15:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3840,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "23519:4:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3843,
                        "mutability": "mutable",
                        "name": "isBatch",
                        "nodeType": "VariableDeclaration",
                        "scope": 3926,
                        "src": "23544:12:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3842,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "23544:4:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23424:138:20"
                  },
                  "returnParameters": {
                    "id": 3845,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "23580:0:20"
                  },
                  "scope": 4060,
                  "src": "23403:768:20",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3952,
                    "nodeType": "Block",
                    "src": "24302:256:20",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3937,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3935,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3928,
                            "src": "24316:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 3936,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3930,
                            "src": "24324:2:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "24316:10:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3951,
                        "nodeType": "IfStatement",
                        "src": "24312:240:20",
                        "trueBody": {
                          "id": 3950,
                          "nodeType": "Block",
                          "src": "24328:224:20",
                          "statements": [
                            {
                              "expression": {
                                "id": 3942,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 3938,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1833,
                                    "src": "24415:12:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3940,
                                  "indexExpression": {
                                    "id": 3939,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3928,
                                    "src": "24428:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "24415:18:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "id": 3941,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3932,
                                  "src": "24437:6:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "24415:28:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3943,
                              "nodeType": "ExpressionStatement",
                              "src": "24415:28:20"
                            },
                            {
                              "expression": {
                                "id": 3948,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 3944,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1833,
                                    "src": "24515:12:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3946,
                                  "indexExpression": {
                                    "id": 3945,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3930,
                                    "src": "24528:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "24515:16:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 3947,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3932,
                                  "src": "24535:6:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "24515:26:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3949,
                              "nodeType": "ExpressionStatement",
                              "src": "24515:26:20"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 3953,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferNFTUpdateBalances",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3933,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3928,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3953,
                        "src": "24222:12:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3927,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "24222:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3930,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3953,
                        "src": "24244:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3929,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "24244:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3932,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 3953,
                        "src": "24264:14:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3931,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24264:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24212:72:20"
                  },
                  "returnParameters": {
                    "id": 3934,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24302:0:20"
                  },
                  "scope": 4060,
                  "src": "24177:381:20",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3985,
                    "nodeType": "Block",
                    "src": "24721:277:20",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3966,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3964,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3955,
                            "src": "24735:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 3965,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3957,
                            "src": "24743:2:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "24735:10:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3984,
                        "nodeType": "IfStatement",
                        "src": "24731:261:20",
                        "trueBody": {
                          "id": 3983,
                          "nodeType": "Block",
                          "src": "24747:245:20",
                          "statements": [
                            {
                              "expression": {
                                "id": 3973,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 3967,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 875,
                                      "src": "24834:9:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 3970,
                                    "indexExpression": {
                                      "id": 3968,
                                      "name": "collectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3959,
                                      "src": "24844:12:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "24834:23:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3971,
                                  "indexExpression": {
                                    "id": 3969,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3955,
                                    "src": "24858:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "24834:29:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "id": 3972,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3961,
                                  "src": "24867:6:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "24834:39:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3974,
                              "nodeType": "ExpressionStatement",
                              "src": "24834:39:20"
                            },
                            {
                              "expression": {
                                "id": 3981,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 3975,
                                      "name": "_balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 875,
                                      "src": "24944:9:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 3978,
                                    "indexExpression": {
                                      "id": 3976,
                                      "name": "collectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3959,
                                      "src": "24954:12:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "24944:23:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3979,
                                  "indexExpression": {
                                    "id": 3977,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3957,
                                    "src": "24968:2:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "24944:27:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 3980,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3961,
                                  "src": "24975:6:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "24944:37:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3982,
                              "nodeType": "ExpressionStatement",
                              "src": "24944:37:20"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 3986,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferNFTUpdateCollection",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3962,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3955,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3986,
                        "src": "24611:12:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3954,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "24611:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3957,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3986,
                        "src": "24633:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3956,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "24633:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3959,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 3986,
                        "src": "24653:20:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3958,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24653:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3961,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 3986,
                        "src": "24683:14:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3960,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24683:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24601:102:20"
                  },
                  "returnParameters": {
                    "id": 3963,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24721:0:20"
                  },
                  "scope": 4060,
                  "src": "24564:434:20",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4026,
                    "nodeType": "Block",
                    "src": "25291:790:20",
                    "statements": [
                      {
                        "assignments": [
                          3995
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3995,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "scope": 4026,
                            "src": "25301:12:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3994,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "25301:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3996,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25301:12:20"
                      },
                      {
                        "assignments": [
                          3998
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3998,
                            "mutability": "mutable",
                            "name": "result",
                            "nodeType": "VariableDeclaration",
                            "scope": 4026,
                            "src": "25323:11:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3997,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "25323:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3999,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25323:11:20"
                      },
                      {
                        "assignments": [
                          4001
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4001,
                            "mutability": "mutable",
                            "name": "staticCallData",
                            "nodeType": "VariableDeclaration",
                            "scope": 4026,
                            "src": "25344:27:20",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 4000,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "25344:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4013,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4005,
                                    "name": "IERC165",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 218,
                                    "src": "25402:7:20",
                                    "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": 4004,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "25397:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 4006,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "25397:13:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$218",
                                  "typeString": "type(contract IERC165)"
                                }
                              },
                              "id": 4007,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "25397:25:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4009,
                                    "name": "IERC1155TokenReceiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1781,
                                    "src": "25429:21:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$1781_$",
                                      "typeString": "type(contract IERC1155TokenReceiver)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$1781_$",
                                      "typeString": "type(contract IERC1155TokenReceiver)"
                                    }
                                  ],
                                  "id": 4008,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "25424:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 4010,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "25424:27:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155TokenReceiver_$1781",
                                  "typeString": "type(contract IERC1155TokenReceiver)"
                                }
                              },
                              "id": 4011,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "25424:39:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "expression": {
                              "id": 4002,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "25374:3:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 4003,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodeWithSelector",
                            "nodeType": "MemberAccess",
                            "src": "25374:22:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes4) pure returns (bytes memory)"
                            }
                          },
                          "id": 4012,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25374:90:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25344:120:20"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "25483:380:20",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25497:41:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25517:4:20",
                                    "type": "",
                                    "value": "0x20"
                                  },
                                  {
                                    "name": "staticCallData",
                                    "nodeType": "YulIdentifier",
                                    "src": "25523:14:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25513:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25513:25:20"
                              },
                              "variables": [
                                {
                                  "name": "call_ptr",
                                  "nodeType": "YulTypedName",
                                  "src": "25501:8:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25551:38:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "staticCallData",
                                    "nodeType": "YulIdentifier",
                                    "src": "25574:14:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25568:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25568:21:20"
                              },
                              "variables": [
                                {
                                  "name": "call_size",
                                  "nodeType": "YulTypedName",
                                  "src": "25555:9:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25602:25:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25622:4:20",
                                    "type": "",
                                    "value": "0x40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25616:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25616:11:20"
                              },
                              "variables": [
                                {
                                  "name": "output",
                                  "nodeType": "YulTypedName",
                                  "src": "25606:6:20",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "output",
                                    "nodeType": "YulIdentifier",
                                    "src": "25706:6:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25714:3:20",
                                    "type": "",
                                    "value": "0x0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25699:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25699:19:20"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25699:19:20"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25731:74:20",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25753:5:20",
                                    "type": "",
                                    "value": "10000"
                                  },
                                  {
                                    "name": "_contract",
                                    "nodeType": "YulIdentifier",
                                    "src": "25760:9:20"
                                  },
                                  {
                                    "name": "call_ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "25771:8:20"
                                  },
                                  {
                                    "name": "call_size",
                                    "nodeType": "YulIdentifier",
                                    "src": "25781:9:20"
                                  },
                                  {
                                    "name": "output",
                                    "nodeType": "YulIdentifier",
                                    "src": "25792:6:20"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25800:4:20",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "staticcall",
                                  "nodeType": "YulIdentifier",
                                  "src": "25742:10:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25742:63:20"
                              },
                              "variableNames": [
                                {
                                  "name": "success",
                                  "nodeType": "YulIdentifier",
                                  "src": "25731:7:20"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25830:23:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "output",
                                    "nodeType": "YulIdentifier",
                                    "src": "25846:6:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25840:5:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25840:13:20"
                              },
                              "variableNames": [
                                {
                                  "name": "result",
                                  "nodeType": "YulIdentifier",
                                  "src": "25830:6:20"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 3989,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "25760:9:20",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3998,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "25830:6:20",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4001,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "25523:14:20",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4001,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "25574:14:20",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3995,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "25731:7:20",
                            "valueSize": 1
                          }
                        ],
                        "id": 4014,
                        "nodeType": "InlineAssembly",
                        "src": "25474:389:20"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4019,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 4016,
                                  "name": "gasleft",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -7,
                                  "src": "26024:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view returns (uint256)"
                                  }
                                },
                                "id": 4017,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "26024:9:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "313538",
                                "id": 4018,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "26036:3:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_158_by_1",
                                  "typeString": "int_const 158"
                                },
                                "value": "158"
                              },
                              "src": "26024:15:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4015,
                            "name": "assert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -3,
                            "src": "26017:6:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4020,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26017:23:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4021,
                        "nodeType": "ExpressionStatement",
                        "src": "26017:23:20"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4022,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3995,
                            "src": "26057:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "id": 4023,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3998,
                            "src": "26068:6:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "26057:17:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 3993,
                        "id": 4025,
                        "nodeType": "Return",
                        "src": "26050:24:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3987,
                    "nodeType": "StructuredDocumentation",
                    "src": "25004:201:20",
                    "text": " Queries whether a contract implements ERC1155TokenReceiver.\n @param _contract address of the contract.\n @return wheter the given contract implements ERC1155TokenReceiver."
                  },
                  "id": 4027,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_isERC1155TokenReceiver",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3990,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3989,
                        "mutability": "mutable",
                        "name": "_contract",
                        "nodeType": "VariableDeclaration",
                        "scope": 4027,
                        "src": "25243:17:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3988,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "25243:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25242:19:20"
                  },
                  "returnParameters": {
                    "id": 3993,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3992,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4027,
                        "src": "25285:4:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3991,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "25285:4:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25284:6:20"
                  },
                  "scope": 4060,
                  "src": "25210:871:20",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4058,
                    "nodeType": "Block",
                    "src": "26637:197:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 4054,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 4044,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 312,
                                      "src": "26705:10:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                        "typeString": "function () view returns (address payable)"
                                      }
                                    },
                                    "id": 4045,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "26705:12:20",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 4046,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4030,
                                    "src": "26719:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4047,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4034,
                                    "src": "26725:5:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4048,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4036,
                                    "src": "26732:4:20",
                                    "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": 4041,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4032,
                                        "src": "26684:2:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 4040,
                                      "name": "IERC721Receiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5742,
                                      "src": "26668:15:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$5742_$",
                                        "typeString": "type(contract IERC721Receiver)"
                                      }
                                    },
                                    "id": 4042,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "26668:19:20",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC721Receiver_$5742",
                                      "typeString": "contract IERC721Receiver"
                                    }
                                  },
                                  "id": 4043,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onERC721Received",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5741,
                                  "src": "26668:36:20",
                                  "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": 4049,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "26668:69:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 4051,
                                      "name": "IERC721Receiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5742,
                                      "src": "26746:15:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$5742_$",
                                        "typeString": "type(contract IERC721Receiver)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$5742_$",
                                        "typeString": "type(contract IERC721Receiver)"
                                      }
                                    ],
                                    "id": 4050,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "26741:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 4052,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "26741:21:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Receiver_$5742",
                                    "typeString": "type(contract IERC721Receiver)"
                                  }
                                },
                                "id": 4053,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "26741:33:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "26668:106:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207472616e736665722072656675736564",
                              "id": 4055,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "26788:29:20",
                              "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": 4039,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "26647:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4056,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26647:180:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4057,
                        "nodeType": "ExpressionStatement",
                        "src": "26647:180:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4028,
                    "nodeType": "StructuredDocumentation",
                    "src": "26087:407:20",
                    "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": 4059,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_callOnERC721Received",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4037,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4030,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4059,
                        "src": "26539:12:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4029,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "26539:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4032,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4059,
                        "src": "26561:10:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4031,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "26561:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4034,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4059,
                        "src": "26581:13:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4033,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26581:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4036,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4059,
                        "src": "26604:17:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4035,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "26604:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26529:98:20"
                  },
                  "returnParameters": {
                    "id": 4038,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "26637:0:20"
                  },
                  "scope": 4060,
                  "src": "26499:335:20",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 4061,
              "src": "1301:25535:20"
            }
          ],
          "src": "33:26804:20"
        },
        "id": 20
      },
      "contracts/token/ERC1155721/ERC1155721InventoryBurnable.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155721/ERC1155721InventoryBurnable.sol",
          "exportedSymbols": {
            "ERC1155721Inventory": [
              4060
            ],
            "ERC1155721InventoryBurnable": [
              4703
            ],
            "ERC1155InventoryIdentifiersLib": [
              1464
            ],
            "IERC1155721InventoryBurnable": [
              4886
            ],
            "IERC165": [
              218
            ]
          },
          "id": 4704,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4062,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:21"
            },
            {
              "absolutePath": "contracts/token/ERC1155/ERC1155InventoryIdentifiersLib.sol",
              "file": "./../ERC1155/ERC1155InventoryIdentifiersLib.sol",
              "id": 4064,
              "nodeType": "ImportDirective",
              "scope": 4704,
              "sourceUnit": 1465,
              "src": "66:95:21",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4063,
                    "name": "ERC1155InventoryIdentifiersLib",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:30:21",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "id": 4066,
              "nodeType": "ImportDirective",
              "scope": 4704,
              "sourceUnit": 219,
              "src": "162:93:21",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4065,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "170:7:21",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721InventoryBurnable.sol",
              "file": "./interfaces/IERC1155721InventoryBurnable.sol",
              "id": 4068,
              "nodeType": "ImportDirective",
              "scope": 4704,
              "sourceUnit": 4887,
              "src": "256:91:21",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4067,
                    "name": "IERC1155721InventoryBurnable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "264:28:21",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155721/ERC1155721Inventory.sol",
              "file": "./ERC1155721Inventory.sol",
              "id": 4070,
              "nodeType": "ImportDirective",
              "scope": 4704,
              "sourceUnit": 4061,
              "src": "348:62:21",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4069,
                    "name": "ERC1155721Inventory",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "356:19:21",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 4072,
                    "name": "IERC1155721InventoryBurnable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4886,
                    "src": "706:28:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155721InventoryBurnable_$4886",
                      "typeString": "contract IERC1155721InventoryBurnable"
                    }
                  },
                  "id": 4073,
                  "nodeType": "InheritanceSpecifier",
                  "src": "706:28:21"
                },
                {
                  "baseName": {
                    "id": 4074,
                    "name": "ERC1155721Inventory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4060,
                    "src": "736:19:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155721Inventory_$4060",
                      "typeString": "contract ERC1155721Inventory"
                    }
                  },
                  "id": 4075,
                  "nodeType": "InheritanceSpecifier",
                  "src": "736:19:21"
                }
              ],
              "contractDependencies": [
                218,
                322,
                1382,
                1579,
                1682,
                1719,
                1731,
                1743,
                4060,
                4851,
                4886,
                5685,
                5700,
                5724
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 4071,
                "nodeType": "StructuredDocumentation",
                "src": "412:244:21",
                "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": 4703,
              "linearizedBaseContracts": [
                4703,
                4060,
                1382,
                1731,
                1743,
                5724,
                4851,
                5700,
                5685,
                1682,
                1719,
                1579,
                218,
                322,
                4886
              ],
              "name": "ERC1155721InventoryBurnable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 4078,
                  "libraryName": {
                    "id": 4076,
                    "name": "ERC1155InventoryIdentifiersLib",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1464,
                    "src": "768:30:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155InventoryIdentifiersLib_$1464",
                      "typeString": "library ERC1155InventoryIdentifiersLib"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "762:49:21",
                  "typeName": {
                    "id": 4077,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "803:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "body": {
                    "id": 4092,
                    "nodeType": "Block",
                    "src": "991:2:21",
                    "statements": []
                  },
                  "id": 4093,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 4087,
                          "name": "name_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4080,
                          "src": "953:5:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "id": 4088,
                          "name": "symbol_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4082,
                          "src": "960:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "id": 4089,
                          "name": "collectionMaskLength",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4084,
                          "src": "969:20:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 4090,
                      "modifierName": {
                        "id": 4086,
                        "name": "ERC1155721Inventory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4060,
                        "src": "933:19:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC1155721Inventory_$4060_$",
                          "typeString": "type(contract ERC1155721Inventory)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "933:57:21"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4085,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4080,
                        "mutability": "mutable",
                        "name": "name_",
                        "nodeType": "VariableDeclaration",
                        "scope": 4093,
                        "src": "838:19:21",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4079,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "838:6:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4082,
                        "mutability": "mutable",
                        "name": "symbol_",
                        "nodeType": "VariableDeclaration",
                        "scope": 4093,
                        "src": "867:21:21",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4081,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "867:6:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4084,
                        "mutability": "mutable",
                        "name": "collectionMaskLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 4093,
                        "src": "898:28:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4083,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "898:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "828:104:21"
                  },
                  "returnParameters": {
                    "id": 4091,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "991:0:21"
                  },
                  "scope": 4703,
                  "src": "817:176:21",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    1894
                  ],
                  "body": {
                    "id": 4114,
                    "nodeType": "Block",
                    "src": "1247:125:21",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4112,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 4107,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4102,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4096,
                              "src": "1264:11:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4104,
                                    "name": "IERC1155721InventoryBurnable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4886,
                                    "src": "1284:28:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155721InventoryBurnable_$4886_$",
                                      "typeString": "type(contract IERC1155721InventoryBurnable)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155721InventoryBurnable_$4886_$",
                                      "typeString": "type(contract IERC1155721InventoryBurnable)"
                                    }
                                  ],
                                  "id": 4103,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "1279:4:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 4105,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1279:34:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155721InventoryBurnable_$4886",
                                  "typeString": "type(contract IERC1155721InventoryBurnable)"
                                }
                              },
                              "id": 4106,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "1279:46:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "1264:61:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 4110,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4096,
                                "src": "1353:11:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 4108,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "1329:5:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_super$_ERC1155721InventoryBurnable_$4703",
                                  "typeString": "contract super ERC1155721InventoryBurnable"
                                }
                              },
                              "id": 4109,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1894,
                              "src": "1329:23:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 4111,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1329:36:21",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1264:101:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 4101,
                        "id": 4113,
                        "nodeType": "Return",
                        "src": "1257:108:21"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4094,
                    "nodeType": "StructuredDocumentation",
                    "src": "1128:23:21",
                    "text": "@inheritdoc IERC165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 4115,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4098,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1223:8:21"
                  },
                  "parameters": {
                    "id": 4097,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4096,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4115,
                        "src": "1183:18:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 4095,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1183:6:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1182:20:21"
                  },
                  "returnParameters": {
                    "id": 4101,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4100,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4115,
                        "src": "1241:4:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4099,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1241:4:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1240:6:21"
                  },
                  "scope": 4703,
                  "src": "1156:216:21",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4864
                  ],
                  "body": {
                    "id": 4189,
                    "nodeType": "Block",
                    "src": "1669:511:21",
                    "statements": [
                      {
                        "assignments": [
                          4127
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4127,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 4189,
                            "src": "1679:14:21",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 4126,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1679:7:21",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4130,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4128,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "1696:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 4129,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1696:12:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1679:29:21"
                      },
                      {
                        "assignments": [
                          4132
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4132,
                            "mutability": "mutable",
                            "name": "operatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 4189,
                            "src": "1718:15:21",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 4131,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1718:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4137,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4134,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4118,
                              "src": "1750:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4135,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4127,
                              "src": "1756:6:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4133,
                            "name": "_isOperatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1315,
                            "src": "1736:13:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 4136,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1736:27:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1718:45:21"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 4138,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4120,
                              "src": "1778:2:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 4139,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isFungibleToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1404,
                            "src": "1778:18:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (bool)"
                            }
                          },
                          "id": 4140,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1778:20:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "arguments": [
                              {
                                "id": 4151,
                                "name": "_collectionMaskLength",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 854,
                                "src": "1899:21:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 4149,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4120,
                                "src": "1877:2:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4150,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isNonFungibleToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1428,
                              "src": "1877:21:21",
                              "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": 4152,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1877:44:21",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 4175,
                            "nodeType": "Block",
                            "src": "2047:60:21",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "hexValue": "496e76656e746f72793a206e6f74206120746f6b656e206964",
                                      "id": 4172,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2068:27:21",
                                      "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": 4171,
                                    "name": "revert",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -19,
                                      -19
                                    ],
                                    "referencedDeclaration": -19,
                                    "src": "2061:6:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (string memory) pure"
                                    }
                                  },
                                  "id": 4173,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2061:35:21",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 4174,
                                "nodeType": "ExpressionStatement",
                                "src": "2061:35:21"
                              }
                            ]
                          },
                          "id": 4176,
                          "nodeType": "IfStatement",
                          "src": "1873:234:21",
                          "trueBody": {
                            "id": 4170,
                            "nodeType": "Block",
                            "src": "1923:118:21",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 4154,
                                      "name": "from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4118,
                                      "src": "1946:4:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 4155,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4120,
                                      "src": "1952:2:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 4156,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4122,
                                      "src": "1956:5:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 4157,
                                      "name": "operatable",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4132,
                                      "src": "1963:10:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 4158,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1975:5:21",
                                      "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": 4153,
                                    "name": "_burnNFT",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4678,
                                    "src": "1937:8:21",
                                    "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": 4159,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1937:44:21",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 4160,
                                "nodeType": "ExpressionStatement",
                                "src": "1937:44:21"
                              },
                              {
                                "eventCall": {
                                  "arguments": [
                                    {
                                      "id": 4162,
                                      "name": "from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4118,
                                      "src": "2009:4:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 4165,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2023:1:21",
                                          "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": 4164,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "2015:7:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 4163,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "2015:7:21",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 4166,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2015:10:21",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    {
                                      "id": 4167,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4120,
                                      "src": "2027:2:21",
                                      "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": 4161,
                                    "name": "Transfer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4728,
                                    "src": "2000:8:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                      "typeString": "function (address,address,uint256)"
                                    }
                                  },
                                  "id": 4168,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2000:30:21",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 4169,
                                "nodeType": "EmitStatement",
                                "src": "1995:35:21"
                              }
                            ]
                          }
                        },
                        "id": 4177,
                        "nodeType": "IfStatement",
                        "src": "1774:333:21",
                        "trueBody": {
                          "id": 4148,
                          "nodeType": "Block",
                          "src": "1800:67:21",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4142,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4118,
                                    "src": "1828:4:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4143,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4120,
                                    "src": "1834:2:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4144,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4122,
                                    "src": "1838:5:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4145,
                                    "name": "operatable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4132,
                                    "src": "1845:10:21",
                                    "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": 4141,
                                  "name": "_burnFungible",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4593,
                                  "src": "1814:13:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                    "typeString": "function (address,uint256,uint256,bool)"
                                  }
                                },
                                "id": 4146,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1814:42:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4147,
                              "nodeType": "ExpressionStatement",
                              "src": "1814:42:21"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 4179,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4127,
                              "src": "2137:6:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4180,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4118,
                              "src": "2145:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 4183,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2159:1:21",
                                  "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": 4182,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2151:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 4181,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2151:7:21",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 4184,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2151:10:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 4185,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4120,
                              "src": "2163:2:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4186,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4122,
                              "src": "2167:5:21",
                              "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": 4178,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1479,
                            "src": "2122:14:21",
                            "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": 4187,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2122:51:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4188,
                        "nodeType": "EmitStatement",
                        "src": "2117:56:21"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4116,
                    "nodeType": "StructuredDocumentation",
                    "src": "1507:44:21",
                    "text": "@inheritdoc IERC1155721InventoryBurnable"
                  },
                  "functionSelector": "124d91e5",
                  "id": 4190,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burnFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4124,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1660:8:21"
                  },
                  "parameters": {
                    "id": 4123,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4118,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4190,
                        "src": "1583:12:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4117,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1583:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4120,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4190,
                        "src": "1605:10:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4119,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1605:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4122,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 4190,
                        "src": "1625:13:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4121,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1625:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1573:71:21"
                  },
                  "returnParameters": {
                    "id": 4125,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1669:0:21"
                  },
                  "scope": 4703,
                  "src": "1556:624:21",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4876
                  ],
                  "body": {
                    "id": 4378,
                    "nodeType": "Block",
                    "src": "2373:1823:21",
                    "statements": [
                      {
                        "assignments": [
                          4204
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4204,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 4378,
                            "src": "2383:14:21",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4203,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2383:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4207,
                        "initialValue": {
                          "expression": {
                            "id": 4205,
                            "name": "ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4196,
                            "src": "2400:3:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 4206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "2400:10:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2383:27:21"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4212,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4209,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4204,
                                "src": "2428:6:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 4210,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4199,
                                  "src": "2438:6:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 4211,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "2438:13:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2428:23:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a20696e636f6e73697374656e7420617272617973",
                              "id": 4213,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2453:32:21",
                              "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": 4208,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2420:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2420:66:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4215,
                        "nodeType": "ExpressionStatement",
                        "src": "2420:66:21"
                      },
                      {
                        "assignments": [
                          4217
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4217,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 4378,
                            "src": "2497:14:21",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 4216,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2497:7:21",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4220,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4218,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "2514:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 4219,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2514:12:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2497:29:21"
                      },
                      {
                        "assignments": [
                          4222
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4222,
                            "mutability": "mutable",
                            "name": "operatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 4378,
                            "src": "2536:15:21",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 4221,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2536:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4227,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4224,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4193,
                              "src": "2568:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4225,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4217,
                              "src": "2574:6:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4223,
                            "name": "_isOperatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1315,
                            "src": "2554:13:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 4226,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2554:27:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2536:45:21"
                      },
                      {
                        "assignments": [
                          4229
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4229,
                            "mutability": "mutable",
                            "name": "nfCollectionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 4378,
                            "src": "2592:22:21",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4228,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2592:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4230,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2592:22:21"
                      },
                      {
                        "assignments": [
                          4232
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4232,
                            "mutability": "mutable",
                            "name": "nfCollectionCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 4378,
                            "src": "2624:25:21",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4231,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2624:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4233,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2624:25:21"
                      },
                      {
                        "assignments": [
                          4235
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4235,
                            "mutability": "mutable",
                            "name": "nftsCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 4378,
                            "src": "2659:17:21",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4234,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2659:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4236,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2659:17:21"
                      },
                      {
                        "body": {
                          "id": 4344,
                          "nodeType": "Block",
                          "src": "2720:1115:21",
                          "statements": [
                            {
                              "assignments": [
                                4247
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4247,
                                  "mutability": "mutable",
                                  "name": "id",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4344,
                                  "src": "2734:10:21",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 4246,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2734:7:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4251,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 4248,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4196,
                                  "src": "2747:3:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 4250,
                                "indexExpression": {
                                  "id": 4249,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4238,
                                  "src": "2751:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2747:6:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2734:19:21"
                            },
                            {
                              "condition": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 4252,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4247,
                                    "src": "2771:2:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4253,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "isFungibleToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1404,
                                  "src": "2771:18:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (bool)"
                                  }
                                },
                                "id": 4254,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2771:20:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "arguments": [
                                    {
                                      "id": 4267,
                                      "name": "_collectionMaskLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 854,
                                      "src": "2904:21:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 4265,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4247,
                                      "src": "2882:2:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4266,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "isNonFungibleToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1428,
                                    "src": "2882:21:21",
                                    "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": 4268,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2882:44:21",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 4341,
                                  "nodeType": "Block",
                                  "src": "3757:68:21",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "hexValue": "496e76656e746f72793a206e6f74206120746f6b656e206964",
                                            "id": 4338,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3782:27:21",
                                            "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": 4337,
                                          "name": "revert",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [
                                            -19,
                                            -19
                                          ],
                                          "referencedDeclaration": -19,
                                          "src": "3775:6:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                            "typeString": "function (string memory) pure"
                                          }
                                        },
                                        "id": 4339,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3775:35:21",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 4340,
                                      "nodeType": "ExpressionStatement",
                                      "src": "3775:35:21"
                                    }
                                  ]
                                },
                                "id": 4342,
                                "nodeType": "IfStatement",
                                "src": "2878:947:21",
                                "trueBody": {
                                  "id": 4336,
                                  "nodeType": "Block",
                                  "src": "2928:823:21",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 4270,
                                            "name": "from",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4193,
                                            "src": "2955:4:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 4271,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4247,
                                            "src": "2961:2:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "baseExpression": {
                                              "id": 4272,
                                              "name": "values",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4199,
                                              "src": "2965:6:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                "typeString": "uint256[] memory"
                                              }
                                            },
                                            "id": 4274,
                                            "indexExpression": {
                                              "id": 4273,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4238,
                                              "src": "2972:1:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "2965:9:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 4275,
                                            "name": "operatable",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4222,
                                            "src": "2976:10:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          {
                                            "hexValue": "74727565",
                                            "id": 4276,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2988:4:21",
                                            "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": 4269,
                                          "name": "_burnNFT",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4678,
                                          "src": "2946:8:21",
                                          "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": 4277,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2946:47:21",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 4278,
                                      "nodeType": "ExpressionStatement",
                                      "src": "2946:47:21"
                                    },
                                    {
                                      "eventCall": {
                                        "arguments": [
                                          {
                                            "id": 4280,
                                            "name": "from",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4193,
                                            "src": "3025:4:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "hexValue": "30",
                                                "id": 4283,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3039:1:21",
                                                "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": 4282,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "3031:7:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 4281,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "3031:7:21",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 4284,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3031:10:21",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            }
                                          },
                                          {
                                            "id": 4285,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4247,
                                            "src": "3043:2:21",
                                            "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": 4279,
                                          "name": "Transfer",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4728,
                                          "src": "3016:8:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                            "typeString": "function (address,address,uint256)"
                                          }
                                        },
                                        "id": 4286,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3016:30:21",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 4287,
                                      "nodeType": "EmitStatement",
                                      "src": "3011:35:21"
                                    },
                                    {
                                      "assignments": [
                                        4289
                                      ],
                                      "declarations": [
                                        {
                                          "constant": false,
                                          "id": 4289,
                                          "mutability": "mutable",
                                          "name": "nextCollectionId",
                                          "nodeType": "VariableDeclaration",
                                          "scope": 4336,
                                          "src": "3064:24:21",
                                          "stateVariable": false,
                                          "storageLocation": "default",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "typeName": {
                                            "id": 4288,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "3064:7:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "visibility": "internal"
                                        }
                                      ],
                                      "id": 4294,
                                      "initialValue": {
                                        "arguments": [
                                          {
                                            "id": 4292,
                                            "name": "_collectionMaskLength",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 854,
                                            "src": "3119:21:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "id": 4290,
                                            "name": "id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4247,
                                            "src": "3091:2:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 4291,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getNonFungibleCollection",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1445,
                                          "src": "3091:27:21",
                                          "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": 4293,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3091:50:21",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "VariableDeclarationStatement",
                                      "src": "3064:77:21"
                                    },
                                    {
                                      "condition": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4297,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4295,
                                          "name": "nfCollectionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4229,
                                          "src": "3163:14:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "hexValue": "30",
                                          "id": 4296,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3181:1:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "3163:19:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": {
                                        "id": 4334,
                                        "nodeType": "Block",
                                        "src": "3307:430:21",
                                        "statements": [
                                          {
                                            "condition": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 4309,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 4307,
                                                "name": "nextCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4289,
                                                "src": "3333:16:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "!=",
                                              "rightExpression": {
                                                "id": 4308,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4229,
                                                "src": "3353:14:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "3333:34:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "falseBody": {
                                              "id": 4332,
                                              "nodeType": "Block",
                                              "src": "3651:68:21",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "id": 4330,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "UnaryOperation",
                                                    "operator": "++",
                                                    "prefix": true,
                                                    "src": "3677:19:21",
                                                    "subExpression": {
                                                      "id": 4329,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4232,
                                                      "src": "3679:17:21",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 4331,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "3677:19:21"
                                                }
                                              ]
                                            },
                                            "id": 4333,
                                            "nodeType": "IfStatement",
                                            "src": "3329:390:21",
                                            "trueBody": {
                                              "id": 4328,
                                              "nodeType": "Block",
                                              "src": "3369:276:21",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "arguments": [
                                                      {
                                                        "id": 4311,
                                                        "name": "from",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4193,
                                                        "src": "3420:4:21",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      },
                                                      {
                                                        "id": 4312,
                                                        "name": "nfCollectionId",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4229,
                                                        "src": "3426:14:21",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      {
                                                        "id": 4313,
                                                        "name": "nfCollectionCount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4232,
                                                        "src": "3442:17:21",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      ],
                                                      "id": 4310,
                                                      "name": "_burnNFTUpdateCollection",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4702,
                                                      "src": "3395:24:21",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                        "typeString": "function (address,uint256,uint256)"
                                                      }
                                                    },
                                                    "id": 4314,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3395:65:21",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_tuple$__$",
                                                      "typeString": "tuple()"
                                                    }
                                                  },
                                                  "id": 4315,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "3395:65:21"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 4318,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 4316,
                                                      "name": "nfCollectionId",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4229,
                                                      "src": "3486:14:21",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "id": 4317,
                                                      "name": "nextCollectionId",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4289,
                                                      "src": "3503:16:21",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "3486:33:21",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 4319,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "3486:33:21"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 4322,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 4320,
                                                      "name": "nftsCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4235,
                                                      "src": "3545:9:21",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                      "id": 4321,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4232,
                                                      "src": "3558:17:21",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "3545:30:21",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 4323,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "3545:30:21"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 4326,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                      "id": 4324,
                                                      "name": "nfCollectionCount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4232,
                                                      "src": "3601:17:21",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                      "hexValue": "31",
                                                      "id": 4325,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "3621:1:21",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_1_by_1",
                                                        "typeString": "int_const 1"
                                                      },
                                                      "value": "1"
                                                    },
                                                    "src": "3601:21:21",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 4327,
                                                  "nodeType": "ExpressionStatement",
                                                  "src": "3601:21:21"
                                                }
                                              ]
                                            }
                                          }
                                        ]
                                      },
                                      "id": 4335,
                                      "nodeType": "IfStatement",
                                      "src": "3159:578:21",
                                      "trueBody": {
                                        "id": 4306,
                                        "nodeType": "Block",
                                        "src": "3184:117:21",
                                        "statements": [
                                          {
                                            "expression": {
                                              "id": 4300,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 4298,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4229,
                                                "src": "3206:14:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "id": 4299,
                                                "name": "nextCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4289,
                                                "src": "3223:16:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "3206:33:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 4301,
                                            "nodeType": "ExpressionStatement",
                                            "src": "3206:33:21"
                                          },
                                          {
                                            "expression": {
                                              "id": 4304,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 4302,
                                                "name": "nfCollectionCount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4232,
                                                "src": "3261:17:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "hexValue": "31",
                                                "id": 4303,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3281:1:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "src": "3261:21:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 4305,
                                            "nodeType": "ExpressionStatement",
                                            "src": "3261:21:21"
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                }
                              },
                              "id": 4343,
                              "nodeType": "IfStatement",
                              "src": "2767:1058:21",
                              "trueBody": {
                                "id": 4264,
                                "nodeType": "Block",
                                "src": "2793:79:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 4256,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4193,
                                          "src": "2825:4:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 4257,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4247,
                                          "src": "2831:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "baseExpression": {
                                            "id": 4258,
                                            "name": "values",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4199,
                                            "src": "2835:6:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                              "typeString": "uint256[] memory"
                                            }
                                          },
                                          "id": 4260,
                                          "indexExpression": {
                                            "id": 4259,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4238,
                                            "src": "2842:1:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "2835:9:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 4261,
                                          "name": "operatable",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4222,
                                          "src": "2846:10:21",
                                          "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": 4255,
                                        "name": "_burnFungible",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4593,
                                        "src": "2811:13:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                          "typeString": "function (address,uint256,uint256,bool)"
                                        }
                                      },
                                      "id": 4262,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2811:46:21",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 4263,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2811:46:21"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4242,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4240,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4238,
                            "src": "2702:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 4241,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4204,
                            "src": "2707:6:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2702:11:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4345,
                        "initializationExpression": {
                          "assignments": [
                            4238
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 4238,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 4345,
                              "src": "2691:9:21",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 4237,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2691:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 4239,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2691:9:21"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 4244,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "2715:3:21",
                            "subExpression": {
                              "id": 4243,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4238,
                              "src": "2717:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4245,
                          "nodeType": "ExpressionStatement",
                          "src": "2715:3:21"
                        },
                        "nodeType": "ForStatement",
                        "src": "2686:1149:21"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4348,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4346,
                            "name": "nfCollectionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4229,
                            "src": "3849:14:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 4347,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3867:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3849:19:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4366,
                        "nodeType": "IfStatement",
                        "src": "3845:277:21",
                        "trueBody": {
                          "id": 4365,
                          "nodeType": "Block",
                          "src": "3870:252:21",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4350,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4193,
                                    "src": "3909:4:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4351,
                                    "name": "nfCollectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4229,
                                    "src": "3915:14:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4352,
                                    "name": "nfCollectionCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4232,
                                    "src": "3931:17:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4349,
                                  "name": "_burnNFTUpdateCollection",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4702,
                                  "src": "3884:24:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256)"
                                  }
                                },
                                "id": 4353,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3884:65:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4354,
                              "nodeType": "ExpressionStatement",
                              "src": "3884:65:21"
                            },
                            {
                              "expression": {
                                "id": 4357,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4355,
                                  "name": "nftsCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4235,
                                  "src": "3963:9:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 4356,
                                  "name": "nfCollectionCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4232,
                                  "src": "3976:17:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3963:30:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4358,
                              "nodeType": "ExpressionStatement",
                              "src": "3963:30:21"
                            },
                            {
                              "expression": {
                                "id": 4363,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 4359,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1833,
                                    "src": "4080:12:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 4361,
                                  "indexExpression": {
                                    "id": 4360,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4193,
                                    "src": "4093:4:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4080:18:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "id": 4362,
                                  "name": "nftsCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4235,
                                  "src": "4102:9:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4080:31:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4364,
                              "nodeType": "ExpressionStatement",
                              "src": "4080:31:21"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 4368,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4217,
                              "src": "4151:6:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4369,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4193,
                              "src": "4159:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 4372,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4173:1:21",
                                  "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": 4371,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4165:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 4370,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4165:7:21",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 4373,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4165:10:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 4374,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4196,
                              "src": "4177:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 4375,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4199,
                              "src": "4182:6:21",
                              "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": 4367,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1493,
                            "src": "4137:13:21",
                            "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": 4376,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4137:52:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4377,
                        "nodeType": "EmitStatement",
                        "src": "4132:57:21"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4191,
                    "nodeType": "StructuredDocumentation",
                    "src": "2186:44:21",
                    "text": "@inheritdoc IERC1155721InventoryBurnable"
                  },
                  "functionSelector": "80534934",
                  "id": 4379,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchBurnFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4201,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2364:8:21"
                  },
                  "parameters": {
                    "id": 4200,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4193,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4379,
                        "src": "2267:12:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4192,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2267:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4196,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 4379,
                        "src": "2289:20:21",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4194,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2289:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4195,
                          "nodeType": "ArrayTypeName",
                          "src": "2289:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4199,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 4379,
                        "src": "2319:23:21",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4197,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2319:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4198,
                          "nodeType": "ArrayTypeName",
                          "src": "2319:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2257:91:21"
                  },
                  "returnParameters": {
                    "id": 4202,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2373:0:21"
                  },
                  "scope": 4703,
                  "src": "2235:1961:21",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4885
                  ],
                  "body": {
                    "id": 4537,
                    "nodeType": "Block",
                    "src": "4337:1326:21",
                    "statements": [
                      {
                        "assignments": [
                          4390
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4390,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 4537,
                            "src": "4347:14:21",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 4389,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4347:7:21",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4393,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4391,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "4364:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 4392,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4364:12:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4347:29:21"
                      },
                      {
                        "assignments": [
                          4395
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4395,
                            "mutability": "mutable",
                            "name": "operatable",
                            "nodeType": "VariableDeclaration",
                            "scope": 4537,
                            "src": "4386:15:21",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 4394,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "4386:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4400,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4397,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4382,
                              "src": "4418:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4398,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4390,
                              "src": "4424:6:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4396,
                            "name": "_isOperatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1315,
                            "src": "4404:13:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 4399,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4404:27:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4386:45:21"
                      },
                      {
                        "assignments": [
                          4402
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4402,
                            "mutability": "mutable",
                            "name": "length",
                            "nodeType": "VariableDeclaration",
                            "scope": 4537,
                            "src": "4442:14:21",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4401,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4442:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4405,
                        "initialValue": {
                          "expression": {
                            "id": 4403,
                            "name": "nftIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4385,
                            "src": "4459:6:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 4404,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "4459:13:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4442:30:21"
                      },
                      {
                        "assignments": [
                          4410
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4410,
                            "mutability": "mutable",
                            "name": "values",
                            "nodeType": "VariableDeclaration",
                            "scope": 4537,
                            "src": "4482:23:21",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 4408,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4482:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4409,
                              "nodeType": "ArrayTypeName",
                              "src": "4482:9:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4416,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4414,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4402,
                              "src": "4522:6:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4413,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "4508:13:21",
                            "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": 4411,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4512:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4412,
                              "nodeType": "ArrayTypeName",
                              "src": "4512:9:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 4415,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4508:21:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4482:47:21"
                      },
                      {
                        "assignments": [
                          4418
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4418,
                            "mutability": "mutable",
                            "name": "nfCollectionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 4537,
                            "src": "4540:22:21",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4417,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4540:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4419,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4540:22:21"
                      },
                      {
                        "assignments": [
                          4421
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4421,
                            "mutability": "mutable",
                            "name": "nfCollectionCount",
                            "nodeType": "VariableDeclaration",
                            "scope": 4537,
                            "src": "4572:25:21",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4420,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4572:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4422,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4572:25:21"
                      },
                      {
                        "body": {
                          "id": 4507,
                          "nodeType": "Block",
                          "src": "4641:778:21",
                          "statements": [
                            {
                              "assignments": [
                                4433
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4433,
                                  "mutability": "mutable",
                                  "name": "nftId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4507,
                                  "src": "4655:13:21",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 4432,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4655:7:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4437,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 4434,
                                  "name": "nftIds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4385,
                                  "src": "4671:6:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 4436,
                                "indexExpression": {
                                  "id": 4435,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4424,
                                  "src": "4678:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4671:9:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4655:25:21"
                            },
                            {
                              "expression": {
                                "id": 4442,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 4438,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4410,
                                    "src": "4694:6:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 4440,
                                  "indexExpression": {
                                    "id": 4439,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4424,
                                    "src": "4701:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4694:9:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 4441,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4706:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "4694:13:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4443,
                              "nodeType": "ExpressionStatement",
                              "src": "4694:13:21"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4445,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4382,
                                    "src": "4730:4:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4446,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4433,
                                    "src": "4736:5:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 4447,
                                      "name": "values",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4410,
                                      "src": "4743:6:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 4449,
                                    "indexExpression": {
                                      "id": 4448,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4424,
                                      "src": "4750:1:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4743:9:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4450,
                                    "name": "operatable",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4395,
                                    "src": "4754:10:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "74727565",
                                    "id": 4451,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4766:4:21",
                                    "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": 4444,
                                  "name": "_burnNFT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4678,
                                  "src": "4721:8:21",
                                  "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": 4452,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4721:50:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4453,
                              "nodeType": "ExpressionStatement",
                              "src": "4721:50:21"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 4455,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4382,
                                    "src": "4799:4:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 4458,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4813:1:21",
                                        "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": 4457,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4805:7:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 4456,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4805:7:21",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4459,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4805:10:21",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 4460,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4433,
                                    "src": "4817:5:21",
                                    "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": 4454,
                                  "name": "Transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4728,
                                  "src": "4790:8:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 4461,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4790:33:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4462,
                              "nodeType": "EmitStatement",
                              "src": "4785:38:21"
                            },
                            {
                              "assignments": [
                                4464
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4464,
                                  "mutability": "mutable",
                                  "name": "nextCollectionId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4507,
                                  "src": "4837:24:21",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 4463,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4837:7:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4469,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 4467,
                                    "name": "_collectionMaskLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 854,
                                    "src": "4895:21:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 4465,
                                    "name": "nftId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4433,
                                    "src": "4864:5:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4466,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getNonFungibleCollection",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1445,
                                  "src": "4864:30:21",
                                  "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": 4468,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4864:53:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4837:80:21"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4472,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4470,
                                  "name": "nfCollectionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4418,
                                  "src": "4935:14:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 4471,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4953:1:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "4935:19:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 4505,
                                "nodeType": "Block",
                                "src": "5067:342:21",
                                "statements": [
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4484,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 4482,
                                        "name": "nextCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4464,
                                        "src": "5089:16:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "id": 4483,
                                        "name": "nfCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4418,
                                        "src": "5109:14:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "5089:34:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 4503,
                                      "nodeType": "Block",
                                      "src": "5335:60:21",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 4501,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": true,
                                            "src": "5357:19:21",
                                            "subExpression": {
                                              "id": 4500,
                                              "name": "nfCollectionCount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4421,
                                              "src": "5359:17:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 4502,
                                          "nodeType": "ExpressionStatement",
                                          "src": "5357:19:21"
                                        }
                                      ]
                                    },
                                    "id": 4504,
                                    "nodeType": "IfStatement",
                                    "src": "5085:310:21",
                                    "trueBody": {
                                      "id": 4499,
                                      "nodeType": "Block",
                                      "src": "5125:204:21",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "id": 4486,
                                                "name": "from",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4382,
                                                "src": "5172:4:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "id": 4487,
                                                "name": "nfCollectionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4418,
                                                "src": "5178:14:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "id": 4488,
                                                "name": "nfCollectionCount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4421,
                                                "src": "5194:17:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "id": 4485,
                                              "name": "_burnNFTUpdateCollection",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4702,
                                              "src": "5147:24:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256,uint256)"
                                              }
                                            },
                                            "id": 4489,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "5147:65:21",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 4490,
                                          "nodeType": "ExpressionStatement",
                                          "src": "5147:65:21"
                                        },
                                        {
                                          "expression": {
                                            "id": 4493,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 4491,
                                              "name": "nfCollectionId",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4418,
                                              "src": "5234:14:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "id": 4492,
                                              "name": "nextCollectionId",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4464,
                                              "src": "5251:16:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "5234:33:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 4494,
                                          "nodeType": "ExpressionStatement",
                                          "src": "5234:33:21"
                                        },
                                        {
                                          "expression": {
                                            "id": 4497,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 4495,
                                              "name": "nfCollectionCount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4421,
                                              "src": "5289:17:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "hexValue": "31",
                                              "id": 4496,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "5309:1:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "src": "5289:21:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 4498,
                                          "nodeType": "ExpressionStatement",
                                          "src": "5289:21:21"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "id": 4506,
                              "nodeType": "IfStatement",
                              "src": "4931:478:21",
                              "trueBody": {
                                "id": 4481,
                                "nodeType": "Block",
                                "src": "4956:105:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 4475,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 4473,
                                        "name": "nfCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4418,
                                        "src": "4974:14:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 4474,
                                        "name": "nextCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4464,
                                        "src": "4991:16:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4974:33:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4476,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4974:33:21"
                                  },
                                  {
                                    "expression": {
                                      "id": 4479,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 4477,
                                        "name": "nfCollectionCount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4421,
                                        "src": "5025:17:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "hexValue": "31",
                                        "id": 4478,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5045:1:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "5025:21:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4480,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5025:21:21"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4428,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4426,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4424,
                            "src": "4623:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 4427,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4402,
                            "src": "4628:6:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4623:11:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4508,
                        "initializationExpression": {
                          "assignments": [
                            4424
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 4424,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 4508,
                              "src": "4612:9:21",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 4423,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4612:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 4425,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4612:9:21"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 4430,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "4636:3:21",
                            "subExpression": {
                              "id": 4429,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4424,
                              "src": "4638:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4431,
                          "nodeType": "ExpressionStatement",
                          "src": "4636:3:21"
                        },
                        "nodeType": "ForStatement",
                        "src": "4607:812:21"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4511,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4509,
                            "name": "nfCollectionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4418,
                            "src": "5433:14:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 4510,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5451:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5433:19:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4525,
                        "nodeType": "IfStatement",
                        "src": "5429:157:21",
                        "trueBody": {
                          "id": 4524,
                          "nodeType": "Block",
                          "src": "5454:132:21",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4513,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4382,
                                    "src": "5493:4:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4514,
                                    "name": "nfCollectionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4418,
                                    "src": "5499:14:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4515,
                                    "name": "nfCollectionCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4421,
                                    "src": "5515:17:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4512,
                                  "name": "_burnNFTUpdateCollection",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4702,
                                  "src": "5468:24:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256)"
                                  }
                                },
                                "id": 4516,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5468:65:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4517,
                              "nodeType": "ExpressionStatement",
                              "src": "5468:65:21"
                            },
                            {
                              "expression": {
                                "id": 4522,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 4518,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1833,
                                    "src": "5547:12:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 4520,
                                  "indexExpression": {
                                    "id": 4519,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4382,
                                    "src": "5560:4:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5547:18:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "id": 4521,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4402,
                                  "src": "5569:6:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5547:28:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4523,
                              "nodeType": "ExpressionStatement",
                              "src": "5547:28:21"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 4527,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4390,
                              "src": "5615:6:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4528,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4382,
                              "src": "5623:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 4531,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5637:1:21",
                                  "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": 4530,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5629:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 4529,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5629:7:21",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 4532,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5629:10:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 4533,
                              "name": "nftIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4385,
                              "src": "5641:6:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 4534,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4410,
                              "src": "5649:6:21",
                              "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": 4526,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1493,
                            "src": "5601:13:21",
                            "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": 4535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5601:55:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4536,
                        "nodeType": "EmitStatement",
                        "src": "5596:60:21"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4380,
                    "nodeType": "StructuredDocumentation",
                    "src": "4202:44:21",
                    "text": "@inheritdoc IERC1155721InventoryBurnable"
                  },
                  "functionSelector": "f2472965",
                  "id": 4538,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchBurnFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4387,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4328:8:21"
                  },
                  "parameters": {
                    "id": 4386,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4382,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4538,
                        "src": "4274:12:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4381,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4274:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4385,
                        "mutability": "mutable",
                        "name": "nftIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 4538,
                        "src": "4288:23:21",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4383,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4288:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4384,
                          "nodeType": "ArrayTypeName",
                          "src": "4288:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4273:39:21"
                  },
                  "returnParameters": {
                    "id": 4388,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4337:0:21"
                  },
                  "scope": 4703,
                  "src": "4251:1412:21",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4592,
                    "nodeType": "Block",
                    "src": "5926:346:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4552,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4550,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4544,
                                "src": "5944:5:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 4551,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5953:1:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "5944:10:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a207a65726f2076616c7565",
                              "id": 4553,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5956:23:21",
                              "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": 4549,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5936:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4554,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5936:44:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4555,
                        "nodeType": "ExpressionStatement",
                        "src": "5936:44:21"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4557,
                              "name": "operatable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4546,
                              "src": "5998:10:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d617070726f7665642073656e646572",
                              "id": 4558,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6010:32:21",
                              "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": 4556,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5990:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4559,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5990:53:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4560,
                        "nodeType": "ExpressionStatement",
                        "src": "5990:53:21"
                      },
                      {
                        "assignments": [
                          4562
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4562,
                            "mutability": "mutable",
                            "name": "balance",
                            "nodeType": "VariableDeclaration",
                            "scope": 4592,
                            "src": "6053:15:21",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4561,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6053:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4568,
                        "initialValue": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 4563,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 875,
                              "src": "6071:9:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 4565,
                            "indexExpression": {
                              "id": 4564,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4542,
                              "src": "6081:2:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6071:13:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 4567,
                          "indexExpression": {
                            "id": 4566,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4540,
                            "src": "6085:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6071:19:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6053:37:21"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4572,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4570,
                                "name": "balance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4562,
                                "src": "6108:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 4571,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4544,
                                "src": "6119:5:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6108:16:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f7420656e6f7567682062616c616e6365",
                              "id": 4573,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6126:31:21",
                              "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": 4569,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6100:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6100:58:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4575,
                        "nodeType": "ExpressionStatement",
                        "src": "6100:58:21"
                      },
                      {
                        "expression": {
                          "id": 4584,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 4576,
                                "name": "_balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 875,
                                "src": "6168:9:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 4579,
                              "indexExpression": {
                                "id": 4577,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4542,
                                "src": "6178:2:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6168:13:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 4580,
                            "indexExpression": {
                              "id": 4578,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4540,
                              "src": "6182:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6168:19:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4583,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4581,
                              "name": "balance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4562,
                              "src": "6190:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "id": 4582,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4544,
                              "src": "6200:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "6190:15:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6168:37:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4585,
                        "nodeType": "ExpressionStatement",
                        "src": "6168:37:21"
                      },
                      {
                        "expression": {
                          "id": 4590,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 4586,
                              "name": "_supplies",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 879,
                              "src": "6243:9:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 4588,
                            "indexExpression": {
                              "id": 4587,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4542,
                              "src": "6253:2:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6243:13:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "id": 4589,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4544,
                            "src": "6260:5:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6243:22:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4591,
                        "nodeType": "ExpressionStatement",
                        "src": "6243:22:21"
                      }
                    ]
                  },
                  "id": 4593,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burnFungible",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4547,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4540,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4593,
                        "src": "5830:12:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4539,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5830:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4542,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4593,
                        "src": "5852:10:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4541,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5852:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4544,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 4593,
                        "src": "5872:13:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4543,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5872:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4546,
                        "mutability": "mutable",
                        "name": "operatable",
                        "nodeType": "VariableDeclaration",
                        "scope": 4593,
                        "src": "5895:15:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4545,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5895:4:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5820:96:21"
                  },
                  "returnParameters": {
                    "id": 4548,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5926:0:21"
                  },
                  "scope": 4703,
                  "src": "5798:474:21",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4677,
                    "nodeType": "Block",
                    "src": "6431:639:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4609,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4607,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4599,
                                "src": "6449:5:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 4608,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6458:1:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "6449:10:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a2077726f6e67204e46542076616c7565",
                              "id": 4610,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6461:28:21",
                              "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": 4606,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6441:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4611,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6441:49:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4612,
                        "nodeType": "ExpressionStatement",
                        "src": "6441:49:21"
                      },
                      {
                        "assignments": [
                          4614
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4614,
                            "mutability": "mutable",
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 4677,
                            "src": "6500:13:21",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4613,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6500:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4618,
                        "initialValue": {
                          "baseExpression": {
                            "id": 4615,
                            "name": "_owners",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 883,
                            "src": "6516:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 4617,
                          "indexExpression": {
                            "id": 4616,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4597,
                            "src": "6524:2:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6516:11:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6500:27:21"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 4628,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4620,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4595,
                                "src": "6545:4:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 4625,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4614,
                                        "src": "6569:5:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 4624,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6561:7:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint160_$",
                                        "typeString": "type(uint160)"
                                      },
                                      "typeName": {
                                        "id": 4623,
                                        "name": "uint160",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6561:7:21",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4626,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6561:14:21",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "id": 4622,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6553:7:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 4621,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6553:7:21",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4627,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6553:23:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6545:31:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76656e746f72793a206e6f6e2d6f776e6564204e4654",
                              "id": 4629,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6578:26:21",
                              "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": 4619,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6537:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4630,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6537:68:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4631,
                        "nodeType": "ExpressionStatement",
                        "src": "6537:68:21"
                      },
                      {
                        "condition": {
                          "id": 4633,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "6619:11:21",
                          "subExpression": {
                            "id": 4632,
                            "name": "operatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4601,
                            "src": "6620:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4652,
                        "nodeType": "IfStatement",
                        "src": "6615:163:21",
                        "trueBody": {
                          "id": 4651,
                          "nodeType": "Block",
                          "src": "6632:146:21",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 4647,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 4639,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 4637,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 4635,
                                              "name": "owner",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4614,
                                              "src": "6655:5:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "&",
                                            "rightExpression": {
                                              "id": 4636,
                                              "name": "_APPROVAL_BIT_TOKEN_OWNER_",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1825,
                                              "src": "6663:26:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "6655:34:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "hexValue": "30",
                                            "id": 4638,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "6693:1:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "6655:39:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 4640,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "6654:41:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 4646,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 4641,
                                          "name": "_msgSender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 312,
                                          "src": "6699:10:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                            "typeString": "function () view returns (address payable)"
                                          }
                                        },
                                        "id": 4642,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6699:12:21",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "baseExpression": {
                                          "id": 4643,
                                          "name": "_nftApprovals",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1837,
                                          "src": "6715:13:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                            "typeString": "mapping(uint256 => address)"
                                          }
                                        },
                                        "id": 4645,
                                        "indexExpression": {
                                          "id": 4644,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4597,
                                          "src": "6729:2:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6715:17:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "6699:33:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "6654:78:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "496e76656e746f72793a206e6f6e2d617070726f7665642073656e646572",
                                    "id": 4648,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6734:32:21",
                                    "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": 4634,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "6646:7:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 4649,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6646:121:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4650,
                              "nodeType": "ExpressionStatement",
                              "src": "6646:121:21"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 4657,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 4653,
                              "name": "_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 883,
                              "src": "6787:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 4655,
                            "indexExpression": {
                              "id": 4654,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4597,
                              "src": "6795:2:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6787:11:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 4656,
                            "name": "_BURNT_NFT_OWNER",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 863,
                            "src": "6801:16:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6787:30:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4658,
                        "nodeType": "ExpressionStatement",
                        "src": "6787:30:21"
                      },
                      {
                        "condition": {
                          "id": 4660,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "6832:8:21",
                          "subExpression": {
                            "id": 4659,
                            "name": "isBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4603,
                            "src": "6833:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4676,
                        "nodeType": "IfStatement",
                        "src": "6828:236:21",
                        "trueBody": {
                          "id": 4675,
                          "nodeType": "Block",
                          "src": "6842:222:21",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4662,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4595,
                                    "src": "6881:4:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 4665,
                                        "name": "_collectionMaskLength",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 854,
                                        "src": "6915:21:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 4663,
                                        "name": "id",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4597,
                                        "src": "6887:2:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 4664,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "getNonFungibleCollection",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1445,
                                      "src": "6887:27:21",
                                      "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": 4666,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6887:50:21",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "hexValue": "31",
                                    "id": 4667,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6939:1:21",
                                    "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": 4661,
                                  "name": "_burnNFTUpdateCollection",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4702,
                                  "src": "6856:24:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256)"
                                  }
                                },
                                "id": 4668,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6856:85:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4669,
                              "nodeType": "ExpressionStatement",
                              "src": "6856:85:21"
                            },
                            {
                              "expression": {
                                "id": 4673,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": true,
                                "src": "7033:20:21",
                                "subExpression": {
                                  "baseExpression": {
                                    "id": 4670,
                                    "name": "_nftBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1833,
                                    "src": "7035:12:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 4672,
                                  "indexExpression": {
                                    "id": 4671,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4595,
                                    "src": "7048:4:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7035:18:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4674,
                              "nodeType": "ExpressionStatement",
                              "src": "7033:20:21"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 4678,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burnNFT",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4604,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4595,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4678,
                        "src": "6305:12:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4594,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6305:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4597,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4678,
                        "src": "6327:10:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4596,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6327:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4599,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 4678,
                        "src": "6347:13:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4598,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6347:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4601,
                        "mutability": "mutable",
                        "name": "operatable",
                        "nodeType": "VariableDeclaration",
                        "scope": 4678,
                        "src": "6370:15:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4600,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6370:4:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4603,
                        "mutability": "mutable",
                        "name": "isBatch",
                        "nodeType": "VariableDeclaration",
                        "scope": 4678,
                        "src": "6395:12:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4602,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6395:4:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6295:118:21"
                  },
                  "returnParameters": {
                    "id": 4605,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6431:0:21"
                  },
                  "scope": 4703,
                  "src": "6278:792:21",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4701,
                    "nodeType": "Block",
                    "src": "7209:172:21",
                    "statements": [
                      {
                        "expression": {
                          "id": 4693,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 4687,
                                "name": "_balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 875,
                                "src": "7292:9:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 4690,
                              "indexExpression": {
                                "id": 4688,
                                "name": "collectionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4682,
                                "src": "7302:12:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7292:23:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 4691,
                            "indexExpression": {
                              "id": 4689,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4680,
                              "src": "7316:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7292:29:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "id": 4692,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4684,
                            "src": "7325:6:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7292:39:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4694,
                        "nodeType": "ExpressionStatement",
                        "src": "7292:39:21"
                      },
                      {
                        "expression": {
                          "id": 4699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 4695,
                              "name": "_supplies",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 879,
                              "src": "7341:9:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 4697,
                            "indexExpression": {
                              "id": 4696,
                              "name": "collectionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4682,
                              "src": "7351:12:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7341:23:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "id": 4698,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4684,
                            "src": "7368:6:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7341:33:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4700,
                        "nodeType": "ExpressionStatement",
                        "src": "7341:33:21"
                      }
                    ]
                  },
                  "id": 4702,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burnNFTUpdateCollection",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4685,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4680,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4702,
                        "src": "7119:12:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4679,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7119:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4682,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4702,
                        "src": "7141:20:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4681,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7141:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4684,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 4702,
                        "src": "7171:14:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4683,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7171:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7109:82:21"
                  },
                  "returnParameters": {
                    "id": 4686,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7209:0:21"
                  },
                  "scope": 4703,
                  "src": "7076:305:21",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 4704,
              "src": "657:6726:21"
            }
          ],
          "src": "33:7351:21"
        },
        "id": 21
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721Inventory.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721Inventory.sol",
          "exportedSymbols": {
            "IERC1155": [
              1579
            ],
            "IERC1155721Inventory": [
              4851
            ],
            "IERC1155Inventory": [
              1682
            ],
            "IERC721": [
              5685
            ],
            "IERC721BatchTransfer": [
              5700
            ]
          },
          "id": 4852,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4705,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:22"
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155.sol",
              "file": "./../../ERC1155/interfaces/IERC1155.sol",
              "id": 4707,
              "nodeType": "ImportDirective",
              "scope": 4852,
              "sourceUnit": 1580,
              "src": "66:65:22",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4706,
                    "name": "IERC1155",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:8:22",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155Inventory.sol",
              "file": "./../../ERC1155/interfaces/IERC1155Inventory.sol",
              "id": 4709,
              "nodeType": "ImportDirective",
              "scope": 4852,
              "sourceUnit": 1683,
              "src": "132:83:22",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4708,
                    "name": "IERC1155Inventory",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "140:17:22",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721.sol",
              "file": "./../../ERC721/interfaces/IERC721.sol",
              "id": 4711,
              "nodeType": "ImportDirective",
              "scope": 4852,
              "sourceUnit": 5686,
              "src": "216:62:22",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4710,
                    "name": "IERC721",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "224:7:22",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC721/interfaces/IERC721BatchTransfer.sol",
              "file": "./../../ERC721/interfaces/IERC721BatchTransfer.sol",
              "id": 4713,
              "nodeType": "ImportDirective",
              "scope": 4852,
              "sourceUnit": 5701,
              "src": "279:88:22",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4712,
                    "name": "IERC721BatchTransfer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "287:20:22",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 4715,
                    "name": "IERC1155Inventory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1682,
                    "src": "487:17:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155Inventory_$1682",
                      "typeString": "contract IERC1155Inventory"
                    }
                  },
                  "id": 4716,
                  "nodeType": "InheritanceSpecifier",
                  "src": "487:17:22"
                },
                {
                  "baseName": {
                    "id": 4717,
                    "name": "IERC721",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5685,
                    "src": "506:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC721_$5685",
                      "typeString": "contract IERC721"
                    }
                  },
                  "id": 4718,
                  "nodeType": "InheritanceSpecifier",
                  "src": "506:7:22"
                },
                {
                  "baseName": {
                    "id": 4719,
                    "name": "IERC721BatchTransfer",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5700,
                    "src": "515:20:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC721BatchTransfer_$5700",
                      "typeString": "contract IERC721BatchTransfer"
                    }
                  },
                  "id": 4720,
                  "nodeType": "InheritanceSpecifier",
                  "src": "515:20:22"
                }
              ],
              "contractDependencies": [
                1579,
                1682,
                1719,
                5685,
                5700
              ],
              "contractKind": "interface",
              "documentation": {
                "id": 4714,
                "nodeType": "StructuredDocumentation",
                "src": "369:83:22",
                "text": " @title ERC1155 Inventory with support for ERC721 and EC721BatchTransfer."
              },
              "fullyImplemented": false,
              "id": 4851,
              "linearizedBaseContracts": [
                4851,
                5700,
                5685,
                1682,
                1719,
                1579
              ],
              "name": "IERC1155721Inventory",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 4728,
                  "name": "Transfer",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4727,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4722,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4728,
                        "src": "686:21:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4721,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "686:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4724,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4728,
                        "src": "709:19:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4723,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "709:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4726,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4728,
                        "src": "730:24:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4725,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "730:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "685:70:22"
                  },
                  "src": "671:85:22"
                },
                {
                  "anonymous": false,
                  "id": 4736,
                  "name": "Approval",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4735,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4730,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 4736,
                        "src": "777:22:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4729,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "777:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4732,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 4736,
                        "src": "801:25:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4731,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "801:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4734,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4736,
                        "src": "828:24:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4733,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "828:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "776:77:22"
                  },
                  "src": "762:92:22"
                },
                {
                  "baseFunctions": [
                    5662
                  ],
                  "documentation": {
                    "id": 4737,
                    "nodeType": "StructuredDocumentation",
                    "src": "860:702:22",
                    "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": 4747,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4745,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1669:8:22"
                  },
                  "parameters": {
                    "id": 4744,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4739,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4747,
                        "src": "1598:12:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4738,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1598:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4741,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4747,
                        "src": "1620:10:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4740,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1620:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4743,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4747,
                        "src": "1640:13:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4742,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1640:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1588:71:22"
                  },
                  "returnParameters": {
                    "id": 4746,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1677:0:22"
                  },
                  "scope": 4851,
                  "src": "1567:111:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    5672
                  ],
                  "documentation": {
                    "id": 4748,
                    "nodeType": "StructuredDocumentation",
                    "src": "1684:733:22",
                    "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": 4758,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4756,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2528:8:22"
                  },
                  "parameters": {
                    "id": 4755,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4750,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4758,
                        "src": "2457:12:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4749,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2457:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4752,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4758,
                        "src": "2479:10:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4751,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2479:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4754,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4758,
                        "src": "2499:13:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4753,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2499:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2447:71:22"
                  },
                  "returnParameters": {
                    "id": 4757,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2536:0:22"
                  },
                  "scope": 4851,
                  "src": "2422:115:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    5684
                  ],
                  "documentation": {
                    "id": 4759,
                    "nodeType": "StructuredDocumentation",
                    "src": "2543:800:22",
                    "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": 4771,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4769,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3483:8:22"
                  },
                  "parameters": {
                    "id": 4768,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4761,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4771,
                        "src": "3383:12:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4760,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3383:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4763,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4771,
                        "src": "3405:10:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4762,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3405:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4765,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4771,
                        "src": "3425:13:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4764,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3425:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4767,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4771,
                        "src": "3448:19:22",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4766,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3448:5:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3373:100:22"
                  },
                  "returnParameters": {
                    "id": 4770,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3491:0:22"
                  },
                  "scope": 4851,
                  "src": "3348:144:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    5699
                  ],
                  "documentation": {
                    "id": 4772,
                    "nodeType": "StructuredDocumentation",
                    "src": "3627:648:22",
                    "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": 4783,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4781,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4399:8:22"
                  },
                  "parameters": {
                    "id": 4780,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4774,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4783,
                        "src": "4316:12:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4773,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4316:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4776,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4783,
                        "src": "4338:10:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4775,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4338:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4779,
                        "mutability": "mutable",
                        "name": "nftIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 4783,
                        "src": "4358:25:22",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4777,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4358:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4778,
                          "nodeType": "ArrayTypeName",
                          "src": "4358:9:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4306:83:22"
                  },
                  "returnParameters": {
                    "id": 4782,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4407:0:22"
                  },
                  "scope": 4851,
                  "src": "4280:128:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1664
                  ],
                  "documentation": {
                    "id": 4784,
                    "nodeType": "StructuredDocumentation",
                    "src": "4543:1157:22",
                    "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": 4798,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4796,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5860:8:22"
                  },
                  "parameters": {
                    "id": 4795,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4786,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4798,
                        "src": "5740:12:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4785,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5740:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4788,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4798,
                        "src": "5762:10:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4787,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5762:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4790,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4798,
                        "src": "5782:10:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4789,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5782:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4792,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 4798,
                        "src": "5802:13:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4791,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5802:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4794,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4798,
                        "src": "5825:19:22",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4793,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5825:5:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5730:120:22"
                  },
                  "returnParameters": {
                    "id": 4797,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5868:0:22"
                  },
                  "scope": 4851,
                  "src": "5705:164:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1681
                  ],
                  "documentation": {
                    "id": 4799,
                    "nodeType": "StructuredDocumentation",
                    "src": "5875:1223:22",
                    "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": 4815,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4813,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7287:8:22"
                  },
                  "parameters": {
                    "id": 4812,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4801,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4815,
                        "src": "7143:12:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4800,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7143:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4803,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4815,
                        "src": "7165:10:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4802,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7165:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4806,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 4815,
                        "src": "7185:22:22",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4804,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7185:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4805,
                          "nodeType": "ArrayTypeName",
                          "src": "7185:9:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4809,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 4815,
                        "src": "7217:25:22",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4807,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7217:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4808,
                          "nodeType": "ArrayTypeName",
                          "src": "7217:9:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4811,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4815,
                        "src": "7252:19:22",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4810,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7252:5:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7133:144:22"
                  },
                  "returnParameters": {
                    "id": 4814,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7295:0:22"
                  },
                  "scope": 4851,
                  "src": "7103:193:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1568,
                    5642
                  ],
                  "documentation": {
                    "id": 4816,
                    "nodeType": "StructuredDocumentation",
                    "src": "7431:24:22",
                    "text": "@inheritdoc IERC1155"
                  },
                  "functionSelector": "a22cb465",
                  "id": 4826,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4824,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 4822,
                        "name": "IERC1155",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1579,
                        "src": "7538:8:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155_$1579",
                          "typeString": "contract IERC1155"
                        }
                      },
                      {
                        "id": 4823,
                        "name": "IERC721",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5685,
                        "src": "7548:7:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC721_$5685",
                          "typeString": "contract IERC721"
                        }
                      }
                    ],
                    "src": "7529:27:22"
                  },
                  "parameters": {
                    "id": 4821,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4818,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 4826,
                        "src": "7487:16:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4817,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7487:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4820,
                        "mutability": "mutable",
                        "name": "approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 4826,
                        "src": "7505:13:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4819,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7505:4:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7486:33:22"
                  },
                  "returnParameters": {
                    "id": 4825,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7556:0:22"
                  },
                  "scope": 4851,
                  "src": "7460:97:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1578,
                    5652
                  ],
                  "documentation": {
                    "id": 4827,
                    "nodeType": "StructuredDocumentation",
                    "src": "7563:24:22",
                    "text": "@inheritdoc IERC1155"
                  },
                  "functionSelector": "e985e9c5",
                  "id": 4839,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4835,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 4833,
                        "name": "IERC1155",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1579,
                        "src": "7674:8:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155_$1579",
                          "typeString": "contract IERC1155"
                        }
                      },
                      {
                        "id": 4834,
                        "name": "IERC721",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5685,
                        "src": "7684:7:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC721_$5685",
                          "typeString": "contract IERC721"
                        }
                      }
                    ],
                    "src": "7665:27:22"
                  },
                  "parameters": {
                    "id": 4832,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4829,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 4839,
                        "src": "7618:13:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4828,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7618:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4831,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 4839,
                        "src": "7633:16:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4830,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7633:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7617:33:22"
                  },
                  "returnParameters": {
                    "id": 4838,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4837,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4839,
                        "src": "7702:4:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4836,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7702:4:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7701:6:22"
                  },
                  "scope": 4851,
                  "src": "7592:116:22",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1606,
                    5618
                  ],
                  "documentation": {
                    "id": 4840,
                    "nodeType": "StructuredDocumentation",
                    "src": "7843:33:22",
                    "text": "@inheritdoc IERC1155Inventory"
                  },
                  "functionSelector": "6352211e",
                  "id": 4850,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4846,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 4844,
                        "name": "IERC1155Inventory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1682,
                        "src": "7936:17:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155Inventory_$1682",
                          "typeString": "contract IERC1155Inventory"
                        }
                      },
                      {
                        "id": 4845,
                        "name": "IERC721",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5685,
                        "src": "7955:7:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC721_$5685",
                          "typeString": "contract IERC721"
                        }
                      }
                    ],
                    "src": "7927:36:22"
                  },
                  "parameters": {
                    "id": 4843,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4842,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4850,
                        "src": "7898:13:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4841,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7898:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7897:15:22"
                  },
                  "returnParameters": {
                    "id": 4849,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4848,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4850,
                        "src": "7973:7:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4847,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7973:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7972:9:22"
                  },
                  "scope": 4851,
                  "src": "7881:101:22",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 4852,
              "src": "453:7531:22"
            }
          ],
          "src": "33:7952:22"
        },
        "id": 22
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721InventoryBurnable.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721InventoryBurnable.sol",
          "exportedSymbols": {
            "IERC1155721InventoryBurnable": [
              4886
            ]
          },
          "id": 4887,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4853,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:23"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 4854,
                "nodeType": "StructuredDocumentation",
                "src": "66:333:23",
                "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": 4886,
              "linearizedBaseContracts": [
                4886
              ],
              "name": "IERC1155721InventoryBurnable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 4855,
                    "nodeType": "StructuredDocumentation",
                    "src": "445:842:23",
                    "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": 4864,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burnFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4862,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4857,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4864,
                        "src": "1319:12:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4856,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1319:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4859,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4864,
                        "src": "1341:10:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4858,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1341:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4861,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 4864,
                        "src": "1361:13:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4860,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1361:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1309:71:23"
                  },
                  "returnParameters": {
                    "id": 4863,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1389:0:23"
                  },
                  "scope": 4886,
                  "src": "1292:98:23",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 4865,
                    "nodeType": "StructuredDocumentation",
                    "src": "1396:953:23",
                    "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": 4876,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchBurnFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4874,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4867,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4876,
                        "src": "2386:12:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4866,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2386:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4870,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 4876,
                        "src": "2408:22:23",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4868,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2408:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4869,
                          "nodeType": "ArrayTypeName",
                          "src": "2408:9:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4873,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 4876,
                        "src": "2440:25:23",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4871,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2440:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4872,
                          "nodeType": "ArrayTypeName",
                          "src": "2440:9:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2376:95:23"
                  },
                  "returnParameters": {
                    "id": 4875,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2480:0:23"
                  },
                  "scope": 4886,
                  "src": "2354:127:23",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 4877,
                    "nodeType": "StructuredDocumentation",
                    "src": "2487:531:23",
                    "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": 4885,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchBurnFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4883,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4879,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4885,
                        "src": "3046:12:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4878,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3046:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4882,
                        "mutability": "mutable",
                        "name": "nftIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 4885,
                        "src": "3060:25:23",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4880,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3060:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4881,
                          "nodeType": "ArrayTypeName",
                          "src": "3060:9:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3045:41:23"
                  },
                  "returnParameters": {
                    "id": 4884,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3095:0:23"
                  },
                  "scope": 4886,
                  "src": "3023:73:23",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 4887,
              "src": "400:2698:23"
            }
          ],
          "src": "33:3066:23"
        },
        "id": 23
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721InventoryDeliverable.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721InventoryDeliverable.sol",
          "exportedSymbols": {
            "IERC1155721InventoryDeliverable": [
              4905
            ]
          },
          "id": 4906,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4888,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:24"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 4889,
                "nodeType": "StructuredDocumentation",
                "src": "66:183:24",
                "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": 4905,
              "linearizedBaseContracts": [
                4905
              ],
              "name": "IERC1155721InventoryDeliverable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 4890,
                    "nodeType": "StructuredDocumentation",
                    "src": "298:1254:24",
                    "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": 4904,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeDeliver",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4902,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4893,
                        "mutability": "mutable",
                        "name": "recipients",
                        "nodeType": "VariableDeclaration",
                        "scope": 4904,
                        "src": "1587:29:24",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4891,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1587:7:24",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 4892,
                          "nodeType": "ArrayTypeName",
                          "src": "1587:9:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4896,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 4904,
                        "src": "1626:22:24",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4894,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1626:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4895,
                          "nodeType": "ArrayTypeName",
                          "src": "1626:9:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4899,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 4904,
                        "src": "1658:25:24",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4897,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1658:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4898,
                          "nodeType": "ArrayTypeName",
                          "src": "1658:9:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4901,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4904,
                        "src": "1693:19:24",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4900,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1693:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1577:141:24"
                  },
                  "returnParameters": {
                    "id": 4903,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1727:0:24"
                  },
                  "scope": 4905,
                  "src": "1557:171:24",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 4906,
              "src": "250:1480:24"
            }
          ],
          "src": "33:1698:24"
        },
        "id": 24
      },
      "contracts/token/ERC1155721/interfaces/IERC1155721InventoryMintable.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721InventoryMintable.sol",
          "exportedSymbols": {
            "IERC1155721InventoryMintable": [
              4962
            ]
          },
          "id": 4963,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4907,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:25"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 4908,
                "nodeType": "StructuredDocumentation",
                "src": "66:277:25",
                "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": 4962,
              "linearizedBaseContracts": [
                4962
              ],
              "name": "IERC1155721InventoryMintable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 4909,
                    "nodeType": "StructuredDocumentation",
                    "src": "389:1017:25",
                    "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": 4920,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4918,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4911,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4920,
                        "src": "1438:10:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4910,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1438:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4913,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4920,
                        "src": "1458:10:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4912,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1458:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4915,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 4920,
                        "src": "1478:13:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4914,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1478:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4917,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4920,
                        "src": "1501:19:25",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4916,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1501:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1428:98:25"
                  },
                  "returnParameters": {
                    "id": 4919,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1535:0:25"
                  },
                  "scope": 4962,
                  "src": "1411:125:25",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 4921,
                    "nodeType": "StructuredDocumentation",
                    "src": "1542:1154:25",
                    "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": 4934,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4932,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4923,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4934,
                        "src": "2733:10:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4922,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2733:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4926,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 4934,
                        "src": "2753:22:25",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4924,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2753:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4925,
                          "nodeType": "ArrayTypeName",
                          "src": "2753:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4929,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 4934,
                        "src": "2785:25:25",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4927,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2785:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4928,
                          "nodeType": "ArrayTypeName",
                          "src": "2785:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4931,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4934,
                        "src": "2820:19:25",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4930,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2820:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2723:122:25"
                  },
                  "returnParameters": {
                    "id": 4933,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2854:0:25"
                  },
                  "scope": 4962,
                  "src": "2701:154:25",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 4935,
                    "nodeType": "StructuredDocumentation",
                    "src": "2861:633:25",
                    "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": 4942,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4940,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4937,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4942,
                        "src": "3513:10:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4936,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3513:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4939,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4942,
                        "src": "3525:13:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4938,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3525:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3512:27:25"
                  },
                  "returnParameters": {
                    "id": 4941,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3548:0:25"
                  },
                  "scope": 4962,
                  "src": "3499:50:25",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 4943,
                    "nodeType": "StructuredDocumentation",
                    "src": "3555:687:25",
                    "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": 4951,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4949,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4945,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4951,
                        "src": "4266:10:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4944,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4266:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4948,
                        "mutability": "mutable",
                        "name": "nftIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 4951,
                        "src": "4278:25:25",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4946,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4278:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4947,
                          "nodeType": "ArrayTypeName",
                          "src": "4278:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4265:39:25"
                  },
                  "returnParameters": {
                    "id": 4950,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4313:0:25"
                  },
                  "scope": 4962,
                  "src": "4247:67:25",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 4952,
                    "nodeType": "StructuredDocumentation",
                    "src": "4320:708:25",
                    "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": 4961,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4959,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4954,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4961,
                        "src": "5060:10:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4953,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5060:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4956,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 4961,
                        "src": "5080:13:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4955,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5080:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4958,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4961,
                        "src": "5103:19:25",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4957,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5103:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5050:78:25"
                  },
                  "returnParameters": {
                    "id": 4960,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5137:0:25"
                  },
                  "scope": 4962,
                  "src": "5033:105:25",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 4963,
              "src": "344:4796:25"
            }
          ],
          "src": "33:5108:25"
        },
        "id": 25
      },
      "contracts/token/ERC1155721/mocks/ERC1155721InventoryBurnableMock.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155721/mocks/ERC1155721InventoryBurnableMock.sol",
          "exportedSymbols": {
            "ERC1155721InventoryBurnable": [
              4703
            ],
            "ERC1155721InventoryBurnableMock": [
              5282
            ],
            "IERC1155721InventoryBurnable": [
              4886
            ],
            "IERC1155721InventoryDeliverable": [
              4905
            ],
            "IERC1155721InventoryMintable": [
              4962
            ],
            "IERC1155InventoryCreator": [
              1694
            ],
            "IERC1155MetadataURI": [
              1743
            ],
            "IERC165": [
              218
            ],
            "IForwarderRegistry": [
              5764
            ],
            "ManagedIdentity": [
              322
            ],
            "MinterRole": [
              125
            ],
            "NFTBaseMetadataURI": [
              818
            ],
            "Recoverable": [
              640
            ],
            "UsingUniversalForwarding": [
              5930
            ]
          },
          "id": 5283,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4964,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:26"
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "id": 4966,
              "nodeType": "ImportDirective",
              "scope": 5283,
              "sourceUnit": 5765,
              "src": "66:108:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4965,
                    "name": "IForwarderRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:18:26",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/introspection/IERC165.sol",
              "id": 4968,
              "nodeType": "ImportDirective",
              "scope": 5283,
              "sourceUnit": 219,
              "src": "175:93:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4967,
                    "name": "IERC165",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "183:7:26",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155MetadataURI.sol",
              "file": "./../../../token/ERC1155/interfaces/IERC1155MetadataURI.sol",
              "id": 4970,
              "nodeType": "ImportDirective",
              "scope": 5283,
              "sourceUnit": 1744,
              "src": "269:96:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4969,
                    "name": "IERC1155MetadataURI",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "277:19:26",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155/interfaces/IERC1155InventoryCreator.sol",
              "file": "./../../../token/ERC1155/interfaces/IERC1155InventoryCreator.sol",
              "id": 4972,
              "nodeType": "ImportDirective",
              "scope": 5283,
              "sourceUnit": 1695,
              "src": "366:106:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4971,
                    "name": "IERC1155InventoryCreator",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "374:24:26",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721InventoryMintable.sol",
              "file": "./../interfaces/IERC1155721InventoryMintable.sol",
              "id": 4974,
              "nodeType": "ImportDirective",
              "scope": 5283,
              "sourceUnit": 4963,
              "src": "473:94:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4973,
                    "name": "IERC1155721InventoryMintable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "481:28:26",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721InventoryDeliverable.sol",
              "file": "./../interfaces/IERC1155721InventoryDeliverable.sol",
              "id": 4976,
              "nodeType": "ImportDirective",
              "scope": 5283,
              "sourceUnit": 4906,
              "src": "568:100:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4975,
                    "name": "IERC1155721InventoryDeliverable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "576:31:26",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721InventoryBurnable.sol",
              "file": "./../interfaces/IERC1155721InventoryBurnable.sol",
              "id": 4978,
              "nodeType": "ImportDirective",
              "scope": 5283,
              "sourceUnit": 4887,
              "src": "669:94:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4977,
                    "name": "IERC1155721InventoryBurnable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "677:28:26",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "id": 4980,
              "nodeType": "ImportDirective",
              "scope": 5283,
              "sourceUnit": 323,
              "src": "764:102:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4979,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "772:15:26",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/utils/Recoverable.sol",
              "id": 4982,
              "nodeType": "ImportDirective",
              "scope": 5283,
              "sourceUnit": 652,
              "src": "867:93:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4981,
                    "name": "Recoverable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "875:11:26",
                    "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": 4984,
              "nodeType": "ImportDirective",
              "scope": 5283,
              "sourceUnit": 5931,
              "src": "961:120:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4983,
                    "name": "UsingUniversalForwarding",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "969:24:26",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/access/MinterRole.sol",
              "id": 4986,
              "nodeType": "ImportDirective",
              "scope": 5283,
              "sourceUnit": 126,
              "src": "1082:92:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4985,
                    "name": "MinterRole",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "1090:10:26",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155721/ERC1155721InventoryBurnable.sol",
              "file": "./../ERC1155721InventoryBurnable.sol",
              "id": 4988,
              "nodeType": "ImportDirective",
              "scope": 5283,
              "sourceUnit": 4704,
              "src": "1175:81:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4987,
                    "name": "ERC1155721InventoryBurnable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "1183:27:26",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/metadata/NFTBaseMetadataURI.sol",
              "file": "./../../../metadata/NFTBaseMetadataURI.sol",
              "id": 4990,
              "nodeType": "ImportDirective",
              "scope": 5283,
              "sourceUnit": 819,
              "src": "1257:78:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4989,
                    "name": "NFTBaseMetadataURI",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "1265:18:26",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 4992,
                    "name": "Recoverable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 640,
                    "src": "1445:11:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Recoverable_$640",
                      "typeString": "contract Recoverable"
                    }
                  },
                  "id": 4993,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1445:11:26"
                },
                {
                  "baseName": {
                    "id": 4994,
                    "name": "UsingUniversalForwarding",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5930,
                    "src": "1462:24:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UsingUniversalForwarding_$5930",
                      "typeString": "contract UsingUniversalForwarding"
                    }
                  },
                  "id": 4995,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1462:24:26"
                },
                {
                  "baseName": {
                    "id": 4996,
                    "name": "ERC1155721InventoryBurnable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4703,
                    "src": "1492:27:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155721InventoryBurnable_$4703",
                      "typeString": "contract ERC1155721InventoryBurnable"
                    }
                  },
                  "id": 4997,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1492:27:26"
                },
                {
                  "baseName": {
                    "id": 4998,
                    "name": "IERC1155721InventoryMintable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4962,
                    "src": "1525:28:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155721InventoryMintable_$4962",
                      "typeString": "contract IERC1155721InventoryMintable"
                    }
                  },
                  "id": 4999,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1525:28:26"
                },
                {
                  "baseName": {
                    "id": 5000,
                    "name": "IERC1155721InventoryDeliverable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4905,
                    "src": "1559:31:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155721InventoryDeliverable_$4905",
                      "typeString": "contract IERC1155721InventoryDeliverable"
                    }
                  },
                  "id": 5001,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1559:31:26"
                },
                {
                  "baseName": {
                    "id": 5002,
                    "name": "IERC1155InventoryCreator",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1694,
                    "src": "1596:24:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155InventoryCreator_$1694",
                      "typeString": "contract IERC1155InventoryCreator"
                    }
                  },
                  "id": 5003,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1596:24:26"
                },
                {
                  "baseName": {
                    "id": 5004,
                    "name": "NFTBaseMetadataURI",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 818,
                    "src": "1626:18:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_NFTBaseMetadataURI_$818",
                      "typeString": "contract NFTBaseMetadataURI"
                    }
                  },
                  "id": 5005,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1626:18:26"
                },
                {
                  "baseName": {
                    "id": 5006,
                    "name": "MinterRole",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 125,
                    "src": "1650:10:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MinterRole_$125",
                      "typeString": "contract MinterRole"
                    }
                  },
                  "id": 5007,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1650:10:26"
                }
              ],
              "contractDependencies": [
                22,
                125,
                206,
                218,
                322,
                640,
                818,
                1382,
                1579,
                1682,
                1694,
                1719,
                1731,
                1743,
                4060,
                4703,
                4851,
                4886,
                4905,
                4962,
                5685,
                5700,
                5724,
                5752,
                5789,
                5930
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 4991,
                "nodeType": "StructuredDocumentation",
                "src": "1337:59:26",
                "text": " @title ERC1155 & ERC721 Inventory Burnable Mock."
              },
              "fullyImplemented": true,
              "id": 5282,
              "linearizedBaseContracts": [
                5282,
                125,
                818,
                1694,
                4905,
                4962,
                4703,
                4060,
                1382,
                1731,
                1743,
                5724,
                4851,
                5700,
                5685,
                1682,
                1719,
                1579,
                218,
                5930,
                5752,
                5789,
                640,
                206,
                22,
                322,
                4886
              ],
              "name": "ERC1155721InventoryBurnableMock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 5029,
                    "nodeType": "Block",
                    "src": "2013:2:26",
                    "statements": []
                  },
                  "id": 5030,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "hexValue": "45524331313535373231496e76656e746f72794275726e61626c654d6f636b",
                          "id": 5016,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1841:33:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_3c3d6236bebfc3175253671b157ab2e7de1b99efad316225146573ccd7209dd1",
                            "typeString": "literal_string \"ERC1155721InventoryBurnableMock\""
                          },
                          "value": "ERC1155721InventoryBurnableMock"
                        },
                        {
                          "hexValue": "494e5642",
                          "id": 5017,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1876:6:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_8da0f8c7e43b883b82e6f3ff5ea1bd65223294c1f6932fe6157722292759209d",
                            "typeString": "literal_string \"INVB\""
                          },
                          "value": "INVB"
                        },
                        {
                          "id": 5018,
                          "name": "collectionMaskLength",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5013,
                          "src": "1884:20:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 5019,
                      "modifierName": {
                        "id": 5015,
                        "name": "ERC1155721InventoryBurnable",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4703,
                        "src": "1813:27:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC1155721InventoryBurnable_$4703_$",
                          "typeString": "type(contract ERC1155721InventoryBurnable)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1813:92:26"
                    },
                    {
                      "arguments": [
                        {
                          "id": 5021,
                          "name": "forwarderRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5009,
                          "src": "1939:17:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$5764",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        {
                          "id": 5022,
                          "name": "universalForwarder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5011,
                          "src": "1958:18:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 5023,
                      "modifierName": {
                        "id": 5020,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5930,
                        "src": "1914:24:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$5930_$",
                          "typeString": "type(contract UsingUniversalForwarding)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1914:63:26"
                    },
                    {
                      "arguments": [
                        {
                          "expression": {
                            "id": 5025,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1997:3:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 5026,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1997:10:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        }
                      ],
                      "id": 5027,
                      "modifierName": {
                        "id": 5024,
                        "name": "MinterRole",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 125,
                        "src": "1986:10:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_MinterRole_$125_$",
                          "typeString": "type(contract MinterRole)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1986:22:26"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5014,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5009,
                        "mutability": "mutable",
                        "name": "forwarderRegistry",
                        "nodeType": "VariableDeclaration",
                        "scope": 5030,
                        "src": "1688:36:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IForwarderRegistry_$5764",
                          "typeString": "contract IForwarderRegistry"
                        },
                        "typeName": {
                          "id": 5008,
                          "name": "IForwarderRegistry",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5764,
                          "src": "1688:18:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$5764",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5011,
                        "mutability": "mutable",
                        "name": "universalForwarder",
                        "nodeType": "VariableDeclaration",
                        "scope": 5030,
                        "src": "1734:26:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5010,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1734:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5013,
                        "mutability": "mutable",
                        "name": "collectionMaskLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 5030,
                        "src": "1770:28:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5012,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1770:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1678:126:26"
                  },
                  "returnParameters": {
                    "id": 5028,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2013:0:26"
                  },
                  "scope": 5282,
                  "src": "1667:348:26",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4115
                  ],
                  "body": {
                    "id": 5051,
                    "nodeType": "Block",
                    "src": "2269:121:26",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5049,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 5044,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5039,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5033,
                              "src": "2286:11:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5041,
                                    "name": "IERC1155InventoryCreator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1694,
                                    "src": "2306:24:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155InventoryCreator_$1694_$",
                                      "typeString": "type(contract IERC1155InventoryCreator)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155InventoryCreator_$1694_$",
                                      "typeString": "type(contract IERC1155InventoryCreator)"
                                    }
                                  ],
                                  "id": 5040,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "2301:4:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 5042,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2301:30:26",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155InventoryCreator_$1694",
                                  "typeString": "type(contract IERC1155InventoryCreator)"
                                }
                              },
                              "id": 5043,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "2301:42:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "2286:57:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 5047,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5033,
                                "src": "2371:11:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "id": 5045,
                                "name": "super",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -25,
                                "src": "2347:5:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_super$_ERC1155721InventoryBurnableMock_$5282",
                                  "typeString": "contract super ERC1155721InventoryBurnableMock"
                                }
                              },
                              "id": 5046,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4115,
                              "src": "2347:23:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) view returns (bool)"
                              }
                            },
                            "id": 5048,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2347:36:26",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2286:97:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 5038,
                        "id": 5050,
                        "nodeType": "Return",
                        "src": "2279:104:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5031,
                    "nodeType": "StructuredDocumentation",
                    "src": "2150:23:26",
                    "text": "@inheritdoc IERC165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 5052,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5035,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2245:8:26"
                  },
                  "parameters": {
                    "id": 5034,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5033,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5052,
                        "src": "2205:18:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 5032,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2205:6:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2204:20:26"
                  },
                  "returnParameters": {
                    "id": 5038,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5037,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5052,
                        "src": "2263:4:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5036,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2263:4:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2262:6:26"
                  },
                  "scope": 5282,
                  "src": "2178:212:26",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1955
                  ],
                  "body": {
                    "id": 5065,
                    "nodeType": "Block",
                    "src": "2643:32:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5062,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5055,
                              "src": "2665:2:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5061,
                            "name": "_uri",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 817,
                            "src": "2660:4:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$",
                              "typeString": "function (uint256) view returns (string memory)"
                            }
                          },
                          "id": 5063,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2660:8:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 5060,
                        "id": 5064,
                        "nodeType": "Return",
                        "src": "2653:15:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5053,
                    "nodeType": "StructuredDocumentation",
                    "src": "2525:35:26",
                    "text": "@inheritdoc IERC1155MetadataURI"
                  },
                  "functionSelector": "0e89341c",
                  "id": 5066,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "uri",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5057,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2610:8:26"
                  },
                  "parameters": {
                    "id": 5056,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5055,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 5066,
                        "src": "2578:10:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5054,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2578:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2577:12:26"
                  },
                  "returnParameters": {
                    "id": 5060,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5059,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5066,
                        "src": "2628:13:26",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5058,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2628:6:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2627:15:26"
                  },
                  "scope": 5282,
                  "src": "2565:110:26",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1693
                  ],
                  "body": {
                    "id": 5079,
                    "nodeType": "Block",
                    "src": "2935:46:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5076,
                              "name": "collectionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5069,
                              "src": "2961:12:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5075,
                            "name": "_creator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1293,
                            "src": "2952:8:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 5077,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2952:22:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 5074,
                        "id": 5078,
                        "nodeType": "Return",
                        "src": "2945:29:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5067,
                    "nodeType": "StructuredDocumentation",
                    "src": "2810:40:26",
                    "text": "@inheritdoc IERC1155InventoryCreator"
                  },
                  "functionSelector": "510b5158",
                  "id": 5080,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "creator",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5071,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2908:8:26"
                  },
                  "parameters": {
                    "id": 5070,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5069,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5080,
                        "src": "2872:20:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5068,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2872:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2871:22:26"
                  },
                  "returnParameters": {
                    "id": 5074,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5073,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5080,
                        "src": "2926:7:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5072,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2926:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2925:9:26"
                  },
                  "scope": 5282,
                  "src": "2855:126:26",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 5095,
                    "nodeType": "Block",
                    "src": "3536:89:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5087,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  5259
                                ],
                                "referencedDeclaration": 5259,
                                "src": "3564:10:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 5088,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3564:12:26",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 5086,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "3546:17:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 5089,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3546:31:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5090,
                        "nodeType": "ExpressionStatement",
                        "src": "3546:31:26"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5092,
                              "name": "collectionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5083,
                              "src": "3605:12:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5091,
                            "name": "_createCollection",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1272,
                            "src": "3587:17:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 5093,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3587:31:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5094,
                        "nodeType": "ExpressionStatement",
                        "src": "3587:31:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5081,
                    "nodeType": "StructuredDocumentation",
                    "src": "3116:358:26",
                    "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": 5096,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "createCollection",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5084,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5083,
                        "mutability": "mutable",
                        "name": "collectionId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5096,
                        "src": "3505:20:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5082,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3505:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3504:22:26"
                  },
                  "returnParameters": {
                    "id": 5085,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3536:0:26"
                  },
                  "scope": 5282,
                  "src": "3479:146:26",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    4942
                  ],
                  "body": {
                    "id": 5117,
                    "nodeType": "Block",
                    "src": "3928:82:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5106,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  5259
                                ],
                                "referencedDeclaration": 5259,
                                "src": "3953:10:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 5107,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3953:12:26",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 5105,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "3938:14:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 5108,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3938:28:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5109,
                        "nodeType": "ExpressionStatement",
                        "src": "3938:28:26"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5111,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5099,
                              "src": "3982:2:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5112,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5101,
                              "src": "3986:5:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 5113,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3993:2:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 5114,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3997:5:26",
                              "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": 5110,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2956,
                            "src": "3976:5:26",
                            "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": 5115,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3976:27:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5116,
                        "nodeType": "ExpressionStatement",
                        "src": "3976:27:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5097,
                    "nodeType": "StructuredDocumentation",
                    "src": "3760:96:26",
                    "text": "@inheritdoc IERC1155721InventoryMintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "40c10f19",
                  "id": 5118,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5103,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3919:8:26"
                  },
                  "parameters": {
                    "id": 5102,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5099,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5118,
                        "src": "3875:10:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5098,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3875:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5101,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5118,
                        "src": "3887:13:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5100,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3887:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3874:27:26"
                  },
                  "returnParameters": {
                    "id": 5104,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3928:0:26"
                  },
                  "scope": 5282,
                  "src": "3861:149:26",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    4951
                  ],
                  "body": {
                    "id": 5138,
                    "nodeType": "Block",
                    "src": "4201:77:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5129,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  5259
                                ],
                                "referencedDeclaration": 5259,
                                "src": "4226:10:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 5130,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4226:12:26",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 5128,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "4211:14:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 5131,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4211:28:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5132,
                        "nodeType": "ExpressionStatement",
                        "src": "4211:28:26"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5134,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5121,
                              "src": "4260:2:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5135,
                              "name": "nftIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5124,
                              "src": "4264:6:26",
                              "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": 5133,
                            "name": "_batchMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3149,
                            "src": "4249:10:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256[] memory)"
                            }
                          },
                          "id": 5136,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4249:22:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5137,
                        "nodeType": "ExpressionStatement",
                        "src": "4249:22:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5119,
                    "nodeType": "StructuredDocumentation",
                    "src": "4016:96:26",
                    "text": "@inheritdoc IERC1155721InventoryMintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "4684d7e9",
                  "id": 5139,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchMint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5126,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4192:8:26"
                  },
                  "parameters": {
                    "id": 5125,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5121,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5139,
                        "src": "4136:10:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5120,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4136:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5124,
                        "mutability": "mutable",
                        "name": "nftIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 5139,
                        "src": "4148:25:26",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5122,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4148:7:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5123,
                          "nodeType": "ArrayTypeName",
                          "src": "4148:9:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4135:39:26"
                  },
                  "returnParameters": {
                    "id": 5127,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4201:0:26"
                  },
                  "scope": 5282,
                  "src": "4117:161:26",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    4961
                  ],
                  "body": {
                    "id": 5162,
                    "nodeType": "Block",
                    "src": "4507:83:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5151,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  5259
                                ],
                                "referencedDeclaration": 5259,
                                "src": "4532:10:26",
                                "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": "4532:12:26",
                              "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": "4517:14:26",
                            "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": "4517:28:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5154,
                        "nodeType": "ExpressionStatement",
                        "src": "4517:28:26"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5156,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5142,
                              "src": "4561:2:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5157,
                              "name": "nftId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5144,
                              "src": "4565:5:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 5158,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5146,
                              "src": "4572:4:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 5159,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4578:4:26",
                              "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": 5155,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2956,
                            "src": "4555:5:26",
                            "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": 5160,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4555:28:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5161,
                        "nodeType": "ExpressionStatement",
                        "src": "4555:28:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5140,
                    "nodeType": "StructuredDocumentation",
                    "src": "4284:96:26",
                    "text": "@inheritdoc IERC1155721InventoryMintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "8832e6e3",
                  "id": 5163,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeMint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5148,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4498:8:26"
                  },
                  "parameters": {
                    "id": 5147,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5142,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5163,
                        "src": "4412:10:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5141,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4412:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5144,
                        "mutability": "mutable",
                        "name": "nftId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5163,
                        "src": "4432:13:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5143,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4432:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5146,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 5163,
                        "src": "4455:19:26",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5145,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4455:5:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4402:78:26"
                  },
                  "returnParameters": {
                    "id": 5149,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4507:0:26"
                  },
                  "scope": 5282,
                  "src": "4385:205:26",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    4920
                  ],
                  "body": {
                    "id": 5188,
                    "nodeType": "Block",
                    "src": "4839:85:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5177,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  5259
                                ],
                                "referencedDeclaration": 5259,
                                "src": "4864:10:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 5178,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4864:12:26",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 5176,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "4849:14:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 5179,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4849:28:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5180,
                        "nodeType": "ExpressionStatement",
                        "src": "4849:28:26"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5182,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5166,
                              "src": "4897:2:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5183,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5168,
                              "src": "4901:2:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 5184,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5170,
                              "src": "4905:5:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 5185,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5172,
                              "src": "4912:4:26",
                              "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": 5181,
                            "name": "_safeMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3242,
                            "src": "4887:9:26",
                            "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": 5186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4887:30:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5187,
                        "nodeType": "ExpressionStatement",
                        "src": "4887:30:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5164,
                    "nodeType": "StructuredDocumentation",
                    "src": "4596:96:26",
                    "text": "@inheritdoc IERC1155721InventoryMintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "5cfa9297",
                  "id": 5189,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeMint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5174,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4830:8:26"
                  },
                  "parameters": {
                    "id": 5173,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5166,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5189,
                        "src": "4724:10:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5165,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4724:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5168,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 5189,
                        "src": "4744:10:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5167,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4744:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5170,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 5189,
                        "src": "4764:13:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5169,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4764:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5172,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 5189,
                        "src": "4787:19:26",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5171,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4787:5:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4714:98:26"
                  },
                  "returnParameters": {
                    "id": 5175,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4839:0:26"
                  },
                  "scope": 5282,
                  "src": "4697:227:26",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    4934
                  ],
                  "body": {
                    "id": 5216,
                    "nodeType": "Block",
                    "src": "5202:92:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5205,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  5259
                                ],
                                "referencedDeclaration": 5259,
                                "src": "5227:10:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 5206,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5227:12:26",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 5204,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "5212:14:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 5207,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5212:28:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5208,
                        "nodeType": "ExpressionStatement",
                        "src": "5212:28:26"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5210,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5192,
                              "src": "5265:2:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5211,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5195,
                              "src": "5269:3:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            {
                              "id": 5212,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5198,
                              "src": "5274:6:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            {
                              "id": 5213,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5200,
                              "src": "5282:4:26",
                              "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": 5209,
                            "name": "_safeBatchMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3463,
                            "src": "5250:14:26",
                            "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": 5214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5250:37:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5215,
                        "nodeType": "ExpressionStatement",
                        "src": "5250:37:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5190,
                    "nodeType": "StructuredDocumentation",
                    "src": "4930:96:26",
                    "text": "@inheritdoc IERC1155721InventoryMintable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "0d6a5bbb",
                  "id": 5217,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchMint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5202,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5193:8:26"
                  },
                  "parameters": {
                    "id": 5201,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5192,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5217,
                        "src": "5063:10:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5191,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5063:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5195,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 5217,
                        "src": "5083:22:26",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5193,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5083:7:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5194,
                          "nodeType": "ArrayTypeName",
                          "src": "5083:9:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5198,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 5217,
                        "src": "5115:25:26",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5196,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5115:7:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5197,
                          "nodeType": "ArrayTypeName",
                          "src": "5115:9:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5200,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 5217,
                        "src": "5150:19:26",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5199,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5150:5:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5053:122:26"
                  },
                  "returnParameters": {
                    "id": 5203,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5202:0:26"
                  },
                  "scope": 5282,
                  "src": "5031:263:26",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    4904
                  ],
                  "body": {
                    "id": 5245,
                    "nodeType": "Block",
                    "src": "5723:98:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5234,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  5259
                                ],
                                "referencedDeclaration": 5259,
                                "src": "5748:10:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 5235,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5748:12:26",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 5233,
                            "name": "_requireMinter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 108,
                            "src": "5733:14:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 5236,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5733:28:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5237,
                        "nodeType": "ExpressionStatement",
                        "src": "5733:28:26"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5239,
                              "name": "recipients",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5221,
                              "src": "5784:10:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            {
                              "id": 5240,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5224,
                              "src": "5796:3:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            {
                              "id": 5241,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5227,
                              "src": "5801:6:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            {
                              "id": 5242,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5229,
                              "src": "5809:4:26",
                              "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": 5238,
                            "name": "_safeDeliver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3649,
                            "src": "5771:12:26",
                            "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": 5243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5771:43:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5244,
                        "nodeType": "ExpressionStatement",
                        "src": "5771:43:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5218,
                    "nodeType": "StructuredDocumentation",
                    "src": "5431:99:26",
                    "text": "@inheritdoc IERC1155721InventoryDeliverable\n @dev Reverts if the sender is not a minter."
                  },
                  "functionSelector": "e8ab9ccc",
                  "id": 5246,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeDeliver",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5231,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5714:8:26"
                  },
                  "parameters": {
                    "id": 5230,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5221,
                        "mutability": "mutable",
                        "name": "recipients",
                        "nodeType": "VariableDeclaration",
                        "scope": 5246,
                        "src": "5565:29:26",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5219,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5565:7:26",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 5220,
                          "nodeType": "ArrayTypeName",
                          "src": "5565:9:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5224,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 5246,
                        "src": "5604:22:26",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5222,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5604:7:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5223,
                          "nodeType": "ArrayTypeName",
                          "src": "5604:9:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5227,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 5246,
                        "src": "5636:25:26",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5225,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5636:7:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5226,
                          "nodeType": "ArrayTypeName",
                          "src": "5636:9:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5229,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 5246,
                        "src": "5671:19:26",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5228,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5671:5:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5555:141:26"
                  },
                  "returnParameters": {
                    "id": 5232,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5723:0:26"
                  },
                  "scope": 5282,
                  "src": "5535:286:26",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    312,
                    5884
                  ],
                  "body": {
                    "id": 5258,
                    "nodeType": "Block",
                    "src": "6078:61:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 5254,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5930,
                              "src": "6095:24:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$5930_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 5255,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgSender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5884,
                            "src": "6095:35:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 5256,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6095:37:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 5253,
                        "id": 5257,
                        "nodeType": "Return",
                        "src": "6088:44:26"
                      }
                    ]
                  },
                  "id": 5259,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5250,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 5248,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "6009:15:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 5249,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5930,
                        "src": "6026:24:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UsingUniversalForwarding_$5930",
                          "typeString": "contract UsingUniversalForwarding"
                        }
                      }
                    ],
                    "src": "6000:51:26"
                  },
                  "parameters": {
                    "id": 5247,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5975:2:26"
                  },
                  "returnParameters": {
                    "id": 5253,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5252,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5259,
                        "src": "6061:15:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 5251,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6061:15:26",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6060:17:26"
                  },
                  "scope": 5282,
                  "src": "5956:183:26",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    321,
                    5929
                  ],
                  "body": {
                    "id": 5271,
                    "nodeType": "Block",
                    "src": "6266:59:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 5267,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5930,
                              "src": "6283:24:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$5930_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 5268,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5929,
                            "src": "6283:33:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$",
                              "typeString": "function () view returns (bytes calldata)"
                            }
                          },
                          "id": 5269,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6283:35:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 5266,
                        "id": 5270,
                        "nodeType": "Return",
                        "src": "6276:42:26"
                      }
                    ]
                  },
                  "id": 5272,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5263,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 5261,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "6196:15:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 5262,
                        "name": "UsingUniversalForwarding",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5930,
                        "src": "6213:24:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UsingUniversalForwarding_$5930",
                          "typeString": "contract UsingUniversalForwarding"
                        }
                      }
                    ],
                    "src": "6187:51:26"
                  },
                  "parameters": {
                    "id": 5260,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6162:2:26"
                  },
                  "returnParameters": {
                    "id": 5266,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5265,
                        "mutability": "mutable",
                        "name": "ret",
                        "nodeType": "VariableDeclaration",
                        "scope": 5272,
                        "src": "6248:16:26",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5264,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6248:5:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6247:18:26"
                  },
                  "scope": 5282,
                  "src": "6145:180:26",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5280,
                    "nodeType": "Block",
                    "src": "6520:34:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5277,
                            "name": "_msgData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              5272
                            ],
                            "referencedDeclaration": 5272,
                            "src": "6537:8:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () view returns (bytes memory)"
                            }
                          },
                          "id": 5278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6537:10:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 5276,
                        "id": 5279,
                        "nodeType": "Return",
                        "src": "6530:17:26"
                      }
                    ]
                  },
                  "functionSelector": "c4c2bfdc",
                  "id": 5281,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "msgData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5273,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6476:2:26"
                  },
                  "returnParameters": {
                    "id": 5276,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5275,
                        "mutability": "mutable",
                        "name": "ret",
                        "nodeType": "VariableDeclaration",
                        "scope": 5281,
                        "src": "6502:16:26",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5274,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6502:5:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6501:18:26"
                  },
                  "scope": 5282,
                  "src": "6460:94:26",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5283,
              "src": "1397:5159:26"
            }
          ],
          "src": "33:6524:26"
        },
        "id": 26
      },
      "contracts/token/ERC1155721/mocks/ERC1155721InventoryPausableMock.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC1155721/mocks/ERC1155721InventoryPausableMock.sol",
          "exportedSymbols": {
            "ERC1155721InventoryBurnableMock": [
              5282
            ],
            "ERC1155721InventoryPausableMock": [
              5599
            ],
            "IERC1155721Inventory": [
              4851
            ],
            "IERC1155721InventoryBurnable": [
              4886
            ],
            "IForwarderRegistry": [
              5764
            ],
            "ManagedIdentity": [
              322
            ],
            "Pausable": [
              301
            ],
            "UsingUniversalForwarding": [
              5930
            ]
          },
          "id": 5600,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5284,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:27"
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "file": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "id": 5286,
              "nodeType": "ImportDirective",
              "scope": 5600,
              "sourceUnit": 5765,
              "src": "66:108:27",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 5285,
                    "name": "IForwarderRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:18:27",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721Inventory.sol",
              "file": "./..//interfaces/IERC1155721Inventory.sol",
              "id": 5288,
              "nodeType": "ImportDirective",
              "scope": 5600,
              "sourceUnit": 4852,
              "src": "175:79:27",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 5287,
                    "name": "IERC1155721Inventory",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "183:20:27",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155721/interfaces/IERC1155721InventoryBurnable.sol",
              "file": "./../interfaces/IERC1155721InventoryBurnable.sol",
              "id": 5290,
              "nodeType": "ImportDirective",
              "scope": 5600,
              "sourceUnit": 4887,
              "src": "255:94:27",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 5289,
                    "name": "IERC1155721InventoryBurnable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "263:28:27",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/metatx/ManagedIdentity.sol",
              "id": 5292,
              "nodeType": "ImportDirective",
              "scope": 5600,
              "sourceUnit": 323,
              "src": "350:102:27",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 5291,
                    "name": "ManagedIdentity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "358:15:27",
                    "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": 5294,
              "nodeType": "ImportDirective",
              "scope": 5600,
              "sourceUnit": 5931,
              "src": "453:120:27",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 5293,
                    "name": "UsingUniversalForwarding",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "461:24:27",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/token/ERC1155721/mocks/ERC1155721InventoryBurnableMock.sol",
              "file": "./ERC1155721InventoryBurnableMock.sol",
              "id": 5296,
              "nodeType": "ImportDirective",
              "scope": 5600,
              "sourceUnit": 5283,
              "src": "574:86:27",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 5295,
                    "name": "ERC1155721InventoryBurnableMock",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "582:31:27",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@animoca/ethereum-contracts-core/contracts/lifecycle/Pausable.sol",
              "file": "@animoca/ethereum-contracts-core/contracts/lifecycle/Pausable.sol",
              "id": 5298,
              "nodeType": "ImportDirective",
              "scope": 5600,
              "sourceUnit": 302,
              "src": "661:91:27",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 5297,
                    "name": "Pausable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "669:8:27",
                    "typeDescriptions": {}
                  }
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 5300,
                    "name": "Pausable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 301,
                    "src": "985:8:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Pausable_$301",
                      "typeString": "contract Pausable"
                    }
                  },
                  "id": 5301,
                  "nodeType": "InheritanceSpecifier",
                  "src": "985:8:27"
                },
                {
                  "baseName": {
                    "id": 5302,
                    "name": "ERC1155721InventoryBurnableMock",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5282,
                    "src": "995:31:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155721InventoryBurnableMock_$5282",
                      "typeString": "contract ERC1155721InventoryBurnableMock"
                    }
                  },
                  "id": 5303,
                  "nodeType": "InheritanceSpecifier",
                  "src": "995:31:27"
                }
              ],
              "contractDependencies": [
                22,
                125,
                206,
                218,
                301,
                322,
                640,
                818,
                1382,
                1579,
                1682,
                1694,
                1719,
                1731,
                1743,
                4060,
                4703,
                4851,
                4886,
                4905,
                4962,
                5282,
                5685,
                5700,
                5724,
                5752,
                5789,
                5930
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 5299,
                "nodeType": "StructuredDocumentation",
                "src": "754:186:27",
                "text": " @title ERC1155 $ ERC721 Inventory Pausable Mock.\n @dev The minting functions are usable while paused as it can be useful for contract maintenance such as contract migration."
              },
              "fullyImplemented": true,
              "id": 5599,
              "linearizedBaseContracts": [
                5599,
                5282,
                125,
                818,
                1694,
                4905,
                4962,
                4703,
                4060,
                1382,
                1731,
                1743,
                5724,
                4851,
                5700,
                5685,
                1682,
                1719,
                1579,
                218,
                5930,
                5752,
                5789,
                640,
                206,
                22,
                301,
                322,
                4886
              ],
              "name": "ERC1155721InventoryPausableMock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 5320,
                    "nodeType": "Block",
                    "src": "1280:2:27",
                    "statements": []
                  },
                  "id": 5321,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 5312,
                          "name": "forwarderRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5305,
                          "src": "1203:17:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$5764",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        {
                          "id": 5313,
                          "name": "universalForwarder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5307,
                          "src": "1222:18:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "id": 5314,
                          "name": "collectionMaskLength",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5309,
                          "src": "1242:20:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 5315,
                      "modifierName": {
                        "id": 5311,
                        "name": "ERC1155721InventoryBurnableMock",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5282,
                        "src": "1171:31:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC1155721InventoryBurnableMock_$5282_$",
                          "typeString": "type(contract ERC1155721InventoryBurnableMock)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1171:92:27"
                    },
                    {
                      "arguments": [
                        {
                          "hexValue": "66616c7365",
                          "id": 5317,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1273:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        }
                      ],
                      "id": 5318,
                      "modifierName": {
                        "id": 5316,
                        "name": "Pausable",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 301,
                        "src": "1264:8:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Pausable_$301_$",
                          "typeString": "type(contract Pausable)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1264:15:27"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5310,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5305,
                        "mutability": "mutable",
                        "name": "forwarderRegistry",
                        "nodeType": "VariableDeclaration",
                        "scope": 5321,
                        "src": "1054:36:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IForwarderRegistry_$5764",
                          "typeString": "contract IForwarderRegistry"
                        },
                        "typeName": {
                          "id": 5304,
                          "name": "IForwarderRegistry",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5764,
                          "src": "1054:18:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$5764",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5307,
                        "mutability": "mutable",
                        "name": "universalForwarder",
                        "nodeType": "VariableDeclaration",
                        "scope": 5321,
                        "src": "1100:26:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5306,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1100:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5309,
                        "mutability": "mutable",
                        "name": "collectionMaskLength",
                        "nodeType": "VariableDeclaration",
                        "scope": 5321,
                        "src": "1136:28:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5308,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1136:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1044:126:27"
                  },
                  "returnParameters": {
                    "id": 5319,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1280:0:27"
                  },
                  "scope": 5599,
                  "src": "1033:249:27",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5333,
                    "nodeType": "Block",
                    "src": "1513:66:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5326,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  5585
                                ],
                                "referencedDeclaration": 5585,
                                "src": "1541:10:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 5327,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1541:12:27",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 5325,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "1523:17:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 5328,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1523:31:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5329,
                        "nodeType": "ExpressionStatement",
                        "src": "1523:31:27"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5330,
                            "name": "_pause",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 283,
                            "src": "1564:6:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 5331,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1564:8:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5332,
                        "nodeType": "ExpressionStatement",
                        "src": "1564:8:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5322,
                    "nodeType": "StructuredDocumentation",
                    "src": "1417:57:27",
                    "text": "@dev Reverts if the sender is not the contract owner."
                  },
                  "functionSelector": "8456cb59",
                  "id": 5334,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pause",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5323,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1493:2:27"
                  },
                  "returnParameters": {
                    "id": 5324,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1513:0:27"
                  },
                  "scope": 5599,
                  "src": "1479:100:27",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 5346,
                    "nodeType": "Block",
                    "src": "1683:68:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5339,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  5585
                                ],
                                "referencedDeclaration": 5585,
                                "src": "1711:10:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 5340,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1711:12:27",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 5338,
                            "name": "_requireOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 205,
                            "src": "1693:17:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 5341,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1693:31:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5342,
                        "nodeType": "ExpressionStatement",
                        "src": "1693:31:27"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5343,
                            "name": "_unpause",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 300,
                            "src": "1734:8:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 5344,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1734:10:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5345,
                        "nodeType": "ExpressionStatement",
                        "src": "1734:10:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5335,
                    "nodeType": "StructuredDocumentation",
                    "src": "1585:57:27",
                    "text": "@dev Reverts if the sender is not the contract owner."
                  },
                  "functionSelector": "3f4ba83a",
                  "id": 5347,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "unpause",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5336,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1663:2:27"
                  },
                  "returnParameters": {
                    "id": 5337,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1683:0:27"
                  },
                  "scope": 5599,
                  "src": "1647:104:27",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2151
                  ],
                  "body": {
                    "id": 5369,
                    "nodeType": "Block",
                    "src": "2094:83:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5358,
                            "name": "_requireNotPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 257,
                            "src": "2104:17:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 5359,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2104:19:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5360,
                        "nodeType": "ExpressionStatement",
                        "src": "2104:19:27"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5364,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5350,
                              "src": "2152:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5365,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5352,
                              "src": "2158:2:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5366,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5354,
                              "src": "2162:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 5361,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "2133:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155721InventoryPausableMock_$5599",
                                "typeString": "contract super ERC1155721InventoryPausableMock"
                              }
                            },
                            "id": 5363,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2151,
                            "src": "2133:18:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 5367,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2133:37:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5368,
                        "nodeType": "ExpressionStatement",
                        "src": "2133:37:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5348,
                    "nodeType": "StructuredDocumentation",
                    "src": "1886:84:27",
                    "text": "@inheritdoc IERC1155721Inventory\n @dev Reverts if the contract is paused."
                  },
                  "functionSelector": "23b872dd",
                  "id": 5370,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5356,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2085:8:27"
                  },
                  "parameters": {
                    "id": 5355,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5350,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5370,
                        "src": "2006:12:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5349,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2006:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5352,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5370,
                        "src": "2028:10:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5351,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2028:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5354,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5370,
                        "src": "2048:15:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5353,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2048:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1996:73:27"
                  },
                  "returnParameters": {
                    "id": 5357,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2094:0:27"
                  },
                  "scope": 5599,
                  "src": "1975:202:27",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2171
                  ],
                  "body": {
                    "id": 5392,
                    "nodeType": "Block",
                    "src": "2395:87:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5381,
                            "name": "_requireNotPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 257,
                            "src": "2405:17:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 5382,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2405:19:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5383,
                        "nodeType": "ExpressionStatement",
                        "src": "2405:19:27"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5387,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5373,
                              "src": "2457:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5388,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5375,
                              "src": "2463:2:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5389,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5377,
                              "src": "2467:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 5384,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "2434:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155721InventoryPausableMock_$5599",
                                "typeString": "contract super ERC1155721InventoryPausableMock"
                              }
                            },
                            "id": 5386,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2171,
                            "src": "2434:22:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 5390,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2434:41:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5391,
                        "nodeType": "ExpressionStatement",
                        "src": "2434:41:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5371,
                    "nodeType": "StructuredDocumentation",
                    "src": "2183:84:27",
                    "text": "@inheritdoc IERC1155721Inventory\n @dev Reverts if the contract is paused."
                  },
                  "functionSelector": "42842e0e",
                  "id": 5393,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5379,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2386:8:27"
                  },
                  "parameters": {
                    "id": 5378,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5373,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5393,
                        "src": "2307:12:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5372,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2307:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5375,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5393,
                        "src": "2329:10:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5374,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2329:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5377,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5393,
                        "src": "2349:15:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5376,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2349:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2297:73:27"
                  },
                  "returnParameters": {
                    "id": 5380,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2395:0:27"
                  },
                  "scope": 5599,
                  "src": "2272:210:27",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2193
                  ],
                  "body": {
                    "id": 5418,
                    "nodeType": "Block",
                    "src": "2727:93:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5406,
                            "name": "_requireNotPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 257,
                            "src": "2737:17:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 5407,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2737:19:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5408,
                        "nodeType": "ExpressionStatement",
                        "src": "2737:19:27"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5412,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5396,
                              "src": "2789:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5413,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5398,
                              "src": "2795:2:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5414,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5400,
                              "src": "2799:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 5415,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5402,
                              "src": "2808:4:27",
                              "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"
                              }
                            ],
                            "expression": {
                              "id": 5409,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "2766:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155721InventoryPausableMock_$5599",
                                "typeString": "contract super ERC1155721InventoryPausableMock"
                              }
                            },
                            "id": 5411,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2193,
                            "src": "2766:22:27",
                            "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": 5416,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2766:47:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5417,
                        "nodeType": "ExpressionStatement",
                        "src": "2766:47:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5394,
                    "nodeType": "StructuredDocumentation",
                    "src": "2488:84:27",
                    "text": "@inheritdoc IERC1155721Inventory\n @dev Reverts if the contract is paused."
                  },
                  "functionSelector": "b88d4fde",
                  "id": 5419,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5404,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2718:8:27"
                  },
                  "parameters": {
                    "id": 5403,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5396,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5419,
                        "src": "2612:12:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5395,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2612:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5398,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5419,
                        "src": "2634:10:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5397,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2634:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5400,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5419,
                        "src": "2654:15:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5399,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2654:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5402,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 5419,
                        "src": "2679:17:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5401,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2679:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2602:100:27"
                  },
                  "returnParameters": {
                    "id": 5405,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2727:0:27"
                  },
                  "scope": 5599,
                  "src": "2577:243:27",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2377
                  ],
                  "body": {
                    "id": 5442,
                    "nodeType": "Block",
                    "src": "3176:87:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5431,
                            "name": "_requireNotPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 257,
                            "src": "3186:17:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 5432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3186:19:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5433,
                        "nodeType": "ExpressionStatement",
                        "src": "3186:19:27"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5437,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5422,
                              "src": "3239:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5438,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5424,
                              "src": "3245:2:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5439,
                              "name": "nftIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5427,
                              "src": "3249:6:27",
                              "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_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "expression": {
                              "id": 5434,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "3215:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155721InventoryPausableMock_$5599",
                                "typeString": "contract super ERC1155721InventoryPausableMock"
                              }
                            },
                            "id": 5436,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "batchTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2377,
                            "src": "3215:23:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256[] memory)"
                            }
                          },
                          "id": 5440,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3215:41:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5441,
                        "nodeType": "ExpressionStatement",
                        "src": "3215:41:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5420,
                    "nodeType": "StructuredDocumentation",
                    "src": "2955:84:27",
                    "text": "@inheritdoc IERC1155721Inventory\n @dev Reverts if the contract is paused."
                  },
                  "functionSelector": "f3993d11",
                  "id": 5443,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5429,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3167:8:27"
                  },
                  "parameters": {
                    "id": 5428,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5422,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5443,
                        "src": "3080:12:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5421,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3080:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5424,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5443,
                        "src": "3102:10:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5423,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3102:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5427,
                        "mutability": "mutable",
                        "name": "nftIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 5443,
                        "src": "3122:23:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5425,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3122:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5426,
                          "nodeType": "ArrayTypeName",
                          "src": "3122:9:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3070:81:27"
                  },
                  "returnParameters": {
                    "id": 5430,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3176:0:27"
                  },
                  "scope": 5599,
                  "src": "3044:219:27",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2477
                  ],
                  "body": {
                    "id": 5471,
                    "nodeType": "Block",
                    "src": "3655:95:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5458,
                            "name": "_requireNotPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 257,
                            "src": "3665:17:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 5459,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3665:19:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5460,
                        "nodeType": "ExpressionStatement",
                        "src": "3665:19:27"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5464,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5446,
                              "src": "3717:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5465,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5448,
                              "src": "3723:2:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5466,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5450,
                              "src": "3727:2:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 5467,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5452,
                              "src": "3731:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 5468,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5454,
                              "src": "3738:4:27",
                              "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"
                              }
                            ],
                            "expression": {
                              "id": 5461,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "3694:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155721InventoryPausableMock_$5599",
                                "typeString": "contract super ERC1155721InventoryPausableMock"
                              }
                            },
                            "id": 5463,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2477,
                            "src": "3694:22:27",
                            "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": 5469,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3694:49:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5470,
                        "nodeType": "ExpressionStatement",
                        "src": "3694:49:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5444,
                    "nodeType": "StructuredDocumentation",
                    "src": "3398:84:27",
                    "text": "@inheritdoc IERC1155721Inventory\n @dev Reverts if the contract is paused."
                  },
                  "functionSelector": "f242432a",
                  "id": 5472,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5456,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3646:8:27"
                  },
                  "parameters": {
                    "id": 5455,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5446,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5472,
                        "src": "3522:12:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5445,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3522:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5448,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5472,
                        "src": "3544:10:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5447,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3544:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5450,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 5472,
                        "src": "3564:10:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5449,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3564:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5452,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 5472,
                        "src": "3584:13:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5451,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3584:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5454,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 5472,
                        "src": "3607:17:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5453,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3607:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3512:118:27"
                  },
                  "returnParameters": {
                    "id": 5457,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3655:0:27"
                  },
                  "scope": 5599,
                  "src": "3487:263:27",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2505
                  ],
                  "body": {
                    "id": 5502,
                    "nodeType": "Block",
                    "src": "4038:102:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5489,
                            "name": "_requireNotPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 257,
                            "src": "4048:17:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 5490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4048:19:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5491,
                        "nodeType": "ExpressionStatement",
                        "src": "4048:19:27"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5495,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5475,
                              "src": "4105:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5496,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5477,
                              "src": "4111:2:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5497,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5480,
                              "src": "4115:3:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 5498,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5483,
                              "src": "4120:6:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 5499,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5485,
                              "src": "4128:4:27",
                              "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"
                              }
                            ],
                            "expression": {
                              "id": 5492,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "4077:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155721InventoryPausableMock_$5599",
                                "typeString": "contract super ERC1155721InventoryPausableMock"
                              }
                            },
                            "id": 5494,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeBatchTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2505,
                            "src": "4077:27:27",
                            "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": 5500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4077:56:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5501,
                        "nodeType": "ExpressionStatement",
                        "src": "4077:56:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5473,
                    "nodeType": "StructuredDocumentation",
                    "src": "3756:84:27",
                    "text": "@inheritdoc IERC1155721Inventory\n @dev Reverts if the contract is paused."
                  },
                  "functionSelector": "2eb2c2d6",
                  "id": 5503,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5487,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4029:8:27"
                  },
                  "parameters": {
                    "id": 5486,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5475,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5503,
                        "src": "3885:12:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5474,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3885:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5477,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5503,
                        "src": "3907:10:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5476,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3907:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5480,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 5503,
                        "src": "3927:20:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5478,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3927:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5479,
                          "nodeType": "ArrayTypeName",
                          "src": "3927:9:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5483,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 5503,
                        "src": "3957:23:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5481,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3957:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5482,
                          "nodeType": "ArrayTypeName",
                          "src": "3957:9:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5485,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 5503,
                        "src": "3990:17:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5484,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3990:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3875:138:27"
                  },
                  "returnParameters": {
                    "id": 5488,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4038:0:27"
                  },
                  "scope": 5599,
                  "src": "3845:295:27",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4190
                  ],
                  "body": {
                    "id": 5525,
                    "nodeType": "Block",
                    "src": "4485:77:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5514,
                            "name": "_requireNotPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 257,
                            "src": "4495:17:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 5515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4495:19:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5516,
                        "nodeType": "ExpressionStatement",
                        "src": "4495:19:27"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5520,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5506,
                              "src": "4539:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5521,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5508,
                              "src": "4545:2:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 5522,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5510,
                              "src": "4549:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 5517,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "4524:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155721InventoryPausableMock_$5599",
                                "typeString": "contract super ERC1155721InventoryPausableMock"
                              }
                            },
                            "id": 5519,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "burnFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4190,
                            "src": "4524:14:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 5523,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4524:31:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5524,
                        "nodeType": "ExpressionStatement",
                        "src": "4524:31:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5504,
                    "nodeType": "StructuredDocumentation",
                    "src": "4275:92:27",
                    "text": "@inheritdoc IERC1155721InventoryBurnable\n @dev Reverts if the contract is paused."
                  },
                  "functionSelector": "124d91e5",
                  "id": 5526,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burnFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5512,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4476:8:27"
                  },
                  "parameters": {
                    "id": 5511,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5506,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5526,
                        "src": "4399:12:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5505,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4399:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5508,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "scope": 5526,
                        "src": "4421:10:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5507,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4421:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5510,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 5526,
                        "src": "4441:13:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5509,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4441:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4389:71:27"
                  },
                  "returnParameters": {
                    "id": 5513,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4485:0:27"
                  },
                  "scope": 5599,
                  "src": "4372:190:27",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4379
                  ],
                  "body": {
                    "id": 5550,
                    "nodeType": "Block",
                    "src": "4803:84:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5539,
                            "name": "_requireNotPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 257,
                            "src": "4813:17:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 5540,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4813:19:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5541,
                        "nodeType": "ExpressionStatement",
                        "src": "4813:19:27"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5545,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5529,
                              "src": "4862:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5546,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5532,
                              "src": "4868:3:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 5547,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5535,
                              "src": "4873:6:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "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"
                              }
                            ],
                            "expression": {
                              "id": 5542,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "4842:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155721InventoryPausableMock_$5599",
                                "typeString": "contract super ERC1155721InventoryPausableMock"
                              }
                            },
                            "id": 5544,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "batchBurnFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4379,
                            "src": "4842:19:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 5548,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4842:38:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5549,
                        "nodeType": "ExpressionStatement",
                        "src": "4842:38:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5527,
                    "nodeType": "StructuredDocumentation",
                    "src": "4568:92:27",
                    "text": "@inheritdoc IERC1155721InventoryBurnable\n @dev Reverts if the contract is paused."
                  },
                  "functionSelector": "80534934",
                  "id": 5551,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchBurnFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5537,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4794:8:27"
                  },
                  "parameters": {
                    "id": 5536,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5529,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5551,
                        "src": "4697:12:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5528,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4697:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5532,
                        "mutability": "mutable",
                        "name": "ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 5551,
                        "src": "4719:20:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5530,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4719:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5531,
                          "nodeType": "ArrayTypeName",
                          "src": "4719:9:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5535,
                        "mutability": "mutable",
                        "name": "values",
                        "nodeType": "VariableDeclaration",
                        "scope": 5551,
                        "src": "4749:23:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5533,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4749:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5534,
                          "nodeType": "ArrayTypeName",
                          "src": "4749:9:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4687:91:27"
                  },
                  "returnParameters": {
                    "id": 5538,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4803:0:27"
                  },
                  "scope": 5599,
                  "src": "4665:222:27",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4538
                  ],
                  "body": {
                    "id": 5571,
                    "nodeType": "Block",
                    "src": "5076:79:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5561,
                            "name": "_requireNotPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 257,
                            "src": "5086:17:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 5562,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5086:19:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5563,
                        "nodeType": "ExpressionStatement",
                        "src": "5086:19:27"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5567,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5554,
                              "src": "5135:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5568,
                              "name": "nftIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5557,
                              "src": "5141:6:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "expression": {
                              "id": 5564,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "5115:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155721InventoryPausableMock_$5599",
                                "typeString": "contract super ERC1155721InventoryPausableMock"
                              }
                            },
                            "id": 5566,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "batchBurnFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4538,
                            "src": "5115:19:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256[] memory)"
                            }
                          },
                          "id": 5569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5115:33:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5570,
                        "nodeType": "ExpressionStatement",
                        "src": "5115:33:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5552,
                    "nodeType": "StructuredDocumentation",
                    "src": "4893:92:27",
                    "text": "@inheritdoc IERC1155721InventoryBurnable\n @dev Reverts if the contract is paused."
                  },
                  "functionSelector": "f2472965",
                  "id": 5572,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchBurnFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5559,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5067:8:27"
                  },
                  "parameters": {
                    "id": 5558,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5554,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5572,
                        "src": "5013:12:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5553,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5013:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5557,
                        "mutability": "mutable",
                        "name": "nftIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 5572,
                        "src": "5027:23:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5555,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5027:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5556,
                          "nodeType": "ArrayTypeName",
                          "src": "5027:9:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5012:39:27"
                  },
                  "returnParameters": {
                    "id": 5560,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5076:0:27"
                  },
                  "scope": 5599,
                  "src": "4990:165:27",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    312,
                    5259
                  ],
                  "body": {
                    "id": 5584,
                    "nodeType": "Block",
                    "src": "5419:61:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 5580,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5930,
                              "src": "5436:24:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$5930_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 5581,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgSender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5884,
                            "src": "5436:35:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 5582,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5436:37:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 5579,
                        "id": 5583,
                        "nodeType": "Return",
                        "src": "5429:44:27"
                      }
                    ]
                  },
                  "id": 5585,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5576,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 5574,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "5343:15:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 5575,
                        "name": "ERC1155721InventoryBurnableMock",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5282,
                        "src": "5360:31:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC1155721InventoryBurnableMock_$5282",
                          "typeString": "contract ERC1155721InventoryBurnableMock"
                        }
                      }
                    ],
                    "src": "5334:58:27"
                  },
                  "parameters": {
                    "id": 5573,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5309:2:27"
                  },
                  "returnParameters": {
                    "id": 5579,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5578,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5585,
                        "src": "5402:15:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 5577,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5402:15:27",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5401:17:27"
                  },
                  "scope": 5599,
                  "src": "5290:190:27",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    321,
                    5272
                  ],
                  "body": {
                    "id": 5597,
                    "nodeType": "Block",
                    "src": "5614:59:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 5593,
                              "name": "UsingUniversalForwarding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5930,
                              "src": "5631:24:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_UsingUniversalForwarding_$5930_$",
                                "typeString": "type(contract UsingUniversalForwarding)"
                              }
                            },
                            "id": 5594,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_msgData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5929,
                            "src": "5631:33:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$",
                              "typeString": "function () view returns (bytes calldata)"
                            }
                          },
                          "id": 5595,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5631:35:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 5592,
                        "id": 5596,
                        "nodeType": "Return",
                        "src": "5624:42:27"
                      }
                    ]
                  },
                  "id": 5598,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5589,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 5587,
                        "name": "ManagedIdentity",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 322,
                        "src": "5537:15:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ManagedIdentity_$322",
                          "typeString": "contract ManagedIdentity"
                        }
                      },
                      {
                        "id": 5588,
                        "name": "ERC1155721InventoryBurnableMock",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5282,
                        "src": "5554:31:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC1155721InventoryBurnableMock_$5282",
                          "typeString": "contract ERC1155721InventoryBurnableMock"
                        }
                      }
                    ],
                    "src": "5528:58:27"
                  },
                  "parameters": {
                    "id": 5586,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5503:2:27"
                  },
                  "returnParameters": {
                    "id": 5592,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5591,
                        "mutability": "mutable",
                        "name": "ret",
                        "nodeType": "VariableDeclaration",
                        "scope": 5598,
                        "src": "5596:16:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5590,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5596:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5595:18:27"
                  },
                  "scope": 5599,
                  "src": "5486:187:27",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 5600,
              "src": "941:4734:27"
            }
          ],
          "src": "33:5643:27"
        },
        "id": 27
      },
      "contracts/token/ERC721/interfaces/IERC721.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC721/interfaces/IERC721.sol",
          "exportedSymbols": {
            "IERC721": [
              5685
            ]
          },
          "id": 5686,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5601,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:28"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 5602,
                "nodeType": "StructuredDocumentation",
                "src": "66:299:28",
                "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": 5685,
              "linearizedBaseContracts": [
                5685
              ],
              "name": "IERC721",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 5603,
                    "nodeType": "StructuredDocumentation",
                    "src": "390:195:28",
                    "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": 5610,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5606,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5605,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 5610,
                        "src": "609:13:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5604,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "609:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "608:15:28"
                  },
                  "returnParameters": {
                    "id": 5609,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5608,
                        "mutability": "mutable",
                        "name": "balance",
                        "nodeType": "VariableDeclaration",
                        "scope": 5610,
                        "src": "647:15:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5607,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "647:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "646:17:28"
                  },
                  "scope": 5685,
                  "src": "590:74:28",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 5611,
                    "nodeType": "StructuredDocumentation",
                    "src": "670:183:28",
                    "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": 5618,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5614,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5613,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5618,
                        "src": "875:15:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5612,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "875:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "874:17:28"
                  },
                  "returnParameters": {
                    "id": 5617,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5616,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 5618,
                        "src": "915:13:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5615,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "915:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "914:15:28"
                  },
                  "scope": 5685,
                  "src": "858:72:28",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 5619,
                    "nodeType": "StructuredDocumentation",
                    "src": "936:420:28",
                    "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": 5626,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5624,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5621,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5626,
                        "src": "1378:10:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5620,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1378:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5623,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5626,
                        "src": "1390:15:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5622,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1390:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1377:29:28"
                  },
                  "returnParameters": {
                    "id": 5625,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1415:0:28"
                  },
                  "scope": 5685,
                  "src": "1361:55:28",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 5627,
                    "nodeType": "StructuredDocumentation",
                    "src": "1422:283:28",
                    "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": 5634,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getApproved",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5630,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5629,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5634,
                        "src": "1731:15:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5628,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1731:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1730:17:28"
                  },
                  "returnParameters": {
                    "id": 5633,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5632,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 5634,
                        "src": "1771:16:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5631,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1771:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1770:18:28"
                  },
                  "scope": 5685,
                  "src": "1710:79:28",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 5635,
                    "nodeType": "StructuredDocumentation",
                    "src": "1795:287:28",
                    "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": 5642,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5640,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5637,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 5642,
                        "src": "2114:16:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5636,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2114:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5639,
                        "mutability": "mutable",
                        "name": "approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 5642,
                        "src": "2132:13:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5638,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2132:4:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2113:33:28"
                  },
                  "returnParameters": {
                    "id": 5641,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2155:0:28"
                  },
                  "scope": 5685,
                  "src": "2087:69:28",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 5643,
                    "nodeType": "StructuredDocumentation",
                    "src": "2162:305:28",
                    "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": 5652,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5648,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5645,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 5652,
                        "src": "2498:13:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5644,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2498:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5647,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 5652,
                        "src": "2513:16:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5646,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2513:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2497:33:28"
                  },
                  "returnParameters": {
                    "id": 5651,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5650,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5652,
                        "src": "2554:4:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5649,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2554:4:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2553:6:28"
                  },
                  "scope": 5685,
                  "src": "2472:88:28",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 5653,
                    "nodeType": "StructuredDocumentation",
                    "src": "2566:428:28",
                    "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": 5662,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5660,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5655,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5662,
                        "src": "3030:12:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5654,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3030:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5657,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5662,
                        "src": "3052:10:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5656,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3052:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5659,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5662,
                        "src": "3072:15:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5658,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3072:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3020:73:28"
                  },
                  "returnParameters": {
                    "id": 5661,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3102:0:28"
                  },
                  "scope": 5685,
                  "src": "2999:104:28",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 5663,
                    "nodeType": "StructuredDocumentation",
                    "src": "3109:636:28",
                    "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": 5672,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5670,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5665,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5672,
                        "src": "3785:12:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5664,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3785:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5667,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5672,
                        "src": "3807:10:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5666,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3807:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5669,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5672,
                        "src": "3827:15:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5668,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3827:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3775:73:28"
                  },
                  "returnParameters": {
                    "id": 5671,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3857:0:28"
                  },
                  "scope": 5685,
                  "src": "3750:108:28",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 5673,
                    "nodeType": "StructuredDocumentation",
                    "src": "3864:707:28",
                    "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": 5684,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5682,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5675,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5684,
                        "src": "4611:12:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5674,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4611:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5677,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5684,
                        "src": "4633:10:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5676,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4633:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5679,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5684,
                        "src": "4653:15:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5678,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4653:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5681,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 5684,
                        "src": "4678:19:28",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5680,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4678:5:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4601:102:28"
                  },
                  "returnParameters": {
                    "id": 5683,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4712:0:28"
                  },
                  "scope": 5685,
                  "src": "4576:137:28",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5686,
              "src": "366:4349:28"
            }
          ],
          "src": "33:4683:28"
        },
        "id": 28
      },
      "contracts/token/ERC721/interfaces/IERC721BatchTransfer.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC721/interfaces/IERC721BatchTransfer.sol",
          "exportedSymbols": {
            "IERC721BatchTransfer": [
              5700
            ]
          },
          "id": 5701,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5687,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:29"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 5688,
                "nodeType": "StructuredDocumentation",
                "src": "66:211:29",
                "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": 5700,
              "linearizedBaseContracts": [
                5700
              ],
              "name": "IERC721BatchTransfer",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 5689,
                    "nodeType": "StructuredDocumentation",
                    "src": "315:505:29",
                    "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": 5699,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5697,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5691,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5699,
                        "src": "861:12:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5690,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "861:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5693,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5699,
                        "src": "883:10:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5692,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "883:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5696,
                        "mutability": "mutable",
                        "name": "tokenIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 5699,
                        "src": "903:27:29",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5694,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "903:7:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5695,
                          "nodeType": "ArrayTypeName",
                          "src": "903:9:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "851:85:29"
                  },
                  "returnParameters": {
                    "id": 5698,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "945:0:29"
                  },
                  "scope": 5700,
                  "src": "825:121:29",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5701,
              "src": "278:670:29"
            }
          ],
          "src": "33:916:29"
        },
        "id": 29
      },
      "contracts/token/ERC721/interfaces/IERC721Metadata.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC721/interfaces/IERC721Metadata.sol",
          "exportedSymbols": {
            "IERC721Metadata": [
              5724
            ]
          },
          "id": 5725,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5702,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:30"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 5703,
                "nodeType": "StructuredDocumentation",
                "src": "66:205:30",
                "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": 5724,
              "linearizedBaseContracts": [
                5724
              ],
              "name": "IERC721Metadata",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 5704,
                    "nodeType": "StructuredDocumentation",
                    "src": "304:93:30",
                    "text": " @dev Gets the token name\n @return string representing the token name"
                  },
                  "functionSelector": "06fdde03",
                  "id": 5709,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5705,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "415:2:30"
                  },
                  "returnParameters": {
                    "id": 5708,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5707,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5709,
                        "src": "441:13:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5706,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "441:6:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "440:15:30"
                  },
                  "scope": 5724,
                  "src": "402:54:30",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 5710,
                    "nodeType": "StructuredDocumentation",
                    "src": "462:97:30",
                    "text": " @dev Gets the token symbol\n @return string representing the token symbol"
                  },
                  "functionSelector": "95d89b41",
                  "id": 5715,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5711,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "579:2:30"
                  },
                  "returnParameters": {
                    "id": 5714,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5713,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5715,
                        "src": "605:13:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5712,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "605:6:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "604:15:30"
                  },
                  "scope": 5724,
                  "src": "564:56:30",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 5716,
                    "nodeType": "StructuredDocumentation",
                    "src": "626:232:30",
                    "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": 5723,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenURI",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5719,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5718,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5723,
                        "src": "881:15:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5717,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "881:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "880:17:30"
                  },
                  "returnParameters": {
                    "id": 5722,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5721,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5723,
                        "src": "921:13:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5720,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "921:6:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "920:15:30"
                  },
                  "scope": 5724,
                  "src": "863:73:30",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5725,
              "src": "272:666:30"
            }
          ],
          "src": "33:906:30"
        },
        "id": 30
      },
      "contracts/token/ERC721/interfaces/IERC721Receiver.sol": {
        "ast": {
          "absolutePath": "contracts/token/ERC721/interfaces/IERC721Receiver.sol",
          "exportedSymbols": {
            "IERC721Receiver": [
              5742
            ]
          },
          "id": 5743,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5726,
              "literals": [
                "solidity",
                ">=",
                "0.7",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:31"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 5727,
                "nodeType": "StructuredDocumentation",
                "src": "66:287:31",
                "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": 5742,
              "linearizedBaseContracts": [
                5742
              ],
              "name": "IERC721Receiver",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 5728,
                    "nodeType": "StructuredDocumentation",
                    "src": "386:868:31",
                    "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": 5741,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC721Received",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5737,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5730,
                        "mutability": "mutable",
                        "name": "operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 5741,
                        "src": "1294:16:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5729,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1294:7:31",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5732,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5741,
                        "src": "1320:12:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5731,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1320:7:31",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5734,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nodeType": "VariableDeclaration",
                        "scope": 5741,
                        "src": "1342:15:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5733,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1342:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5736,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "scope": 5741,
                        "src": "1367:19:31",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5735,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1367:5:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1284:108:31"
                  },
                  "returnParameters": {
                    "id": 5740,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5739,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5741,
                        "src": "1411:6:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 5738,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1411:6:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1410:8:31"
                  },
                  "scope": 5742,
                  "src": "1259:160:31",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5743,
              "src": "354:1067:31"
            }
          ],
          "src": "33:1389:31"
        },
        "id": 31
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IERC2771.sol": {
        "ast": {
          "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IERC2771.sol",
          "exportedSymbols": {
            "IERC2771": [
              5752
            ]
          },
          "id": 5753,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5744,
              "literals": [
                "solidity",
                "^",
                "0.7",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:32"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 5752,
              "linearizedBaseContracts": [
                5752
              ],
              "name": "IERC2771",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "572b6c05",
                  "id": 5751,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isTrustedForwarder",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5747,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5746,
                        "mutability": "mutable",
                        "name": "forwarder",
                        "nodeType": "VariableDeclaration",
                        "scope": 5751,
                        "src": "110:17:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5745,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "110:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "109:19:32"
                  },
                  "returnParameters": {
                    "id": 5750,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5749,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5751,
                        "src": "152:4:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5748,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "152:4:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "151:6:32"
                  },
                  "scope": 5752,
                  "src": "82:76:32",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5753,
              "src": "57:103:32"
            }
          ],
          "src": "32:129:32"
        },
        "id": 32
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol": {
        "ast": {
          "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
          "exportedSymbols": {
            "IForwarderRegistry": [
              5764
            ]
          },
          "id": 5765,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5754,
              "literals": [
                "solidity",
                "^",
                "0.7",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:33"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 5764,
              "linearizedBaseContracts": [
                5764
              ],
              "name": "IForwarderRegistry",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "e60125d6",
                  "id": 5763,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isForwarderFor",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5759,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5756,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5763,
                        "src": "116:7:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5755,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "116:7:33",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5758,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5763,
                        "src": "125:7:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5757,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "125:7:33",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "115:18:33"
                  },
                  "returnParameters": {
                    "id": 5762,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5761,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5763,
                        "src": "157:4:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5760,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "157:4:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "156:6:33"
                  },
                  "scope": 5764,
                  "src": "92:71:33",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5765,
              "src": "57:108:33"
            }
          ],
          "src": "32:134:33"
        },
        "id": 33
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingAppendedCallData.sol": {
        "ast": {
          "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingAppendedCallData.sol",
          "exportedSymbols": {
            "UsingAppendedCallData": [
              5789
            ]
          },
          "id": 5790,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5766,
              "literals": [
                "solidity",
                "^",
                "0.7",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:34"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 5789,
              "linearizedBaseContracts": [
                5789
              ],
              "name": "UsingAppendedCallData",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 5772,
                    "nodeType": "Block",
                    "src": "195:427:34",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "536:80:34",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "550:56:34",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "564:2:34",
                                    "type": "",
                                    "value": "96"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "calldatasize",
                                              "nodeType": "YulIdentifier",
                                              "src": "585:12:34"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "585:14:34"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "601:2:34",
                                            "type": "",
                                            "value": "20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "581:3:34"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "581:23:34"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "568:12:34"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "568:37:34"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "560:3:34"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "560:46:34"
                              },
                              "variableNames": [
                                {
                                  "name": "sender",
                                  "nodeType": "YulIdentifier",
                                  "src": "550:6:34"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 5769,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "550:6:34",
                            "valueSize": 1
                          }
                        ],
                        "id": 5771,
                        "nodeType": "InlineAssembly",
                        "src": "527:89:34"
                      }
                    ]
                  },
                  "id": 5773,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_lastAppendedDataAsSender",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5767,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "137:2:34"
                  },
                  "returnParameters": {
                    "id": 5770,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5769,
                        "mutability": "mutable",
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "scope": 5773,
                        "src": "171:22:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 5768,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "171:15:34",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "170:24:34"
                  },
                  "scope": 5789,
                  "src": "103:519:34",
                  "stateMutability": "pure",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5787,
                    "nodeType": "Block",
                    "src": "722:55:34",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "expression": {
                              "id": 5778,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "739:3:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 5779,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "src": "739:8:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          },
                          "endExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5784,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "expression": {
                                  "id": 5780,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "749:3:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 5781,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "data",
                                "nodeType": "MemberAccess",
                                "src": "749:8:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "id": 5782,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "749:15:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "hexValue": "3230",
                              "id": 5783,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "767:2:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_20_by_1",
                                "typeString": "int_const 20"
                              },
                              "value": "20"
                            },
                            "src": "749:20:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5785,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexRangeAccess",
                          "src": "739:31:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr_slice",
                            "typeString": "bytes calldata slice"
                          }
                        },
                        "functionReturnParameters": 5777,
                        "id": 5786,
                        "nodeType": "Return",
                        "src": "732:38:34"
                      }
                    ]
                  },
                  "id": 5788,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgDataAssuming20BytesAppendedData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5774,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "672:2:34"
                  },
                  "returnParameters": {
                    "id": 5777,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5776,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5788,
                        "src": "706:14:34",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5775,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "706:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "705:16:34"
                  },
                  "scope": 5789,
                  "src": "628:149:34",
                  "stateMutability": "pure",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 5790,
              "src": "57:722:34"
            }
          ],
          "src": "32:748:34"
        },
        "id": 34
      },
      "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol": {
        "ast": {
          "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingUniversalForwarding.sol",
          "exportedSymbols": {
            "IERC2771": [
              5752
            ],
            "IForwarderRegistry": [
              5764
            ],
            "UsingAppendedCallData": [
              5789
            ],
            "UsingUniversalForwarding": [
              5930
            ]
          },
          "id": 5931,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5791,
              "literals": [
                "solidity",
                "^",
                "0.7",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:35"
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/UsingAppendedCallData.sol",
              "file": "./UsingAppendedCallData.sol",
              "id": 5792,
              "nodeType": "ImportDirective",
              "scope": 5931,
              "sourceUnit": 5790,
              "src": "57:37:35",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IERC2771.sol",
              "file": "./IERC2771.sol",
              "id": 5793,
              "nodeType": "ImportDirective",
              "scope": 5931,
              "sourceUnit": 5753,
              "src": "95:24:35",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "ethereum-universal-forwarder/src/solc_0.7/ERC2771/IForwarderRegistry.sol",
              "file": "./IForwarderRegistry.sol",
              "id": 5794,
              "nodeType": "ImportDirective",
              "scope": 5931,
              "sourceUnit": 5765,
              "src": "120:34:35",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 5795,
                    "name": "UsingAppendedCallData",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5789,
                    "src": "202:21:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UsingAppendedCallData_$5789",
                      "typeString": "contract UsingAppendedCallData"
                    }
                  },
                  "id": 5796,
                  "nodeType": "InheritanceSpecifier",
                  "src": "202:21:35"
                },
                {
                  "baseName": {
                    "id": 5797,
                    "name": "IERC2771",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5752,
                    "src": "225:8:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC2771_$5752",
                      "typeString": "contract IERC2771"
                    }
                  },
                  "id": 5798,
                  "nodeType": "InheritanceSpecifier",
                  "src": "225:8:35"
                }
              ],
              "contractDependencies": [
                5752,
                5789
              ],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 5930,
              "linearizedBaseContracts": [
                5930,
                5752,
                5789
              ],
              "name": "UsingUniversalForwarding",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 5800,
                  "mutability": "immutable",
                  "name": "_forwarderRegistry",
                  "nodeType": "VariableDeclaration",
                  "scope": 5930,
                  "src": "240:56:35",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IForwarderRegistry_$5764",
                    "typeString": "contract IForwarderRegistry"
                  },
                  "typeName": {
                    "id": 5799,
                    "name": "IForwarderRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5764,
                    "src": "240:18:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IForwarderRegistry_$5764",
                      "typeString": "contract IForwarderRegistry"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5802,
                  "mutability": "immutable",
                  "name": "_universalForwarder",
                  "nodeType": "VariableDeclaration",
                  "scope": 5930,
                  "src": "302:46:35",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5801,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "302:7:35",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5817,
                    "nodeType": "Block",
                    "src": "433:105:35",
                    "statements": [
                      {
                        "expression": {
                          "id": 5811,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5809,
                            "name": "_universalForwarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5802,
                            "src": "443:19:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5810,
                            "name": "universalForwarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5806,
                            "src": "465:18:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "443:40:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5812,
                        "nodeType": "ExpressionStatement",
                        "src": "443:40:35"
                      },
                      {
                        "expression": {
                          "id": 5815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5813,
                            "name": "_forwarderRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5800,
                            "src": "493:18:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IForwarderRegistry_$5764",
                              "typeString": "contract IForwarderRegistry"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5814,
                            "name": "forwarderRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5804,
                            "src": "514:17:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IForwarderRegistry_$5764",
                              "typeString": "contract IForwarderRegistry"
                            }
                          },
                          "src": "493:38:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$5764",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        "id": 5816,
                        "nodeType": "ExpressionStatement",
                        "src": "493:38:35"
                      }
                    ]
                  },
                  "id": 5818,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5807,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5804,
                        "mutability": "mutable",
                        "name": "forwarderRegistry",
                        "nodeType": "VariableDeclaration",
                        "scope": 5818,
                        "src": "367:36:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IForwarderRegistry_$5764",
                          "typeString": "contract IForwarderRegistry"
                        },
                        "typeName": {
                          "id": 5803,
                          "name": "IForwarderRegistry",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5764,
                          "src": "367:18:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IForwarderRegistry_$5764",
                            "typeString": "contract IForwarderRegistry"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5806,
                        "mutability": "mutable",
                        "name": "universalForwarder",
                        "nodeType": "VariableDeclaration",
                        "scope": 5818,
                        "src": "405:26:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5805,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "405:7:35",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "366:66:35"
                  },
                  "returnParameters": {
                    "id": 5808,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "433:0:35"
                  },
                  "scope": 5930,
                  "src": "355:183:35",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    5751
                  ],
                  "body": {
                    "id": 5837,
                    "nodeType": "Block",
                    "src": "637:100:35",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5835,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 5828,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5826,
                              "name": "forwarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5820,
                              "src": "654:9:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 5827,
                              "name": "_universalForwarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5802,
                              "src": "667:19:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "654:32:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 5834,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5829,
                              "name": "forwarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5820,
                              "src": "690:9:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "id": 5832,
                                  "name": "_forwarderRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5800,
                                  "src": "711:18:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IForwarderRegistry_$5764",
                                    "typeString": "contract IForwarderRegistry"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IForwarderRegistry_$5764",
                                    "typeString": "contract IForwarderRegistry"
                                  }
                                ],
                                "id": 5831,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "703:7:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5830,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "703:7:35",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5833,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "703:27:35",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "690:40:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "654:76:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 5825,
                        "id": 5836,
                        "nodeType": "Return",
                        "src": "647:83:35"
                      }
                    ]
                  },
                  "functionSelector": "572b6c05",
                  "id": 5838,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isTrustedForwarder",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5822,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "613:8:35"
                  },
                  "parameters": {
                    "id": 5821,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5820,
                        "mutability": "mutable",
                        "name": "forwarder",
                        "nodeType": "VariableDeclaration",
                        "scope": 5838,
                        "src": "572:17:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5819,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "572:7:35",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "571:19:35"
                  },
                  "returnParameters": {
                    "id": 5825,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5824,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5838,
                        "src": "631:4:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5823,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "631:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "630:6:35"
                  },
                  "scope": 5930,
                  "src": "544:193:35",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 5883,
                    "nodeType": "Block",
                    "src": "813:834:35",
                    "statements": [
                      {
                        "assignments": [
                          5844
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5844,
                            "mutability": "mutable",
                            "name": "msgSender",
                            "nodeType": "VariableDeclaration",
                            "scope": 5883,
                            "src": "823:25:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            "typeName": {
                              "id": 5843,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "823:15:35",
                              "stateMutability": "payable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5847,
                        "initialValue": {
                          "expression": {
                            "id": 5845,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "851:3:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 5846,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "851:10:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "823:38:35"
                      },
                      {
                        "assignments": [
                          5849
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5849,
                            "mutability": "mutable",
                            "name": "sender",
                            "nodeType": "VariableDeclaration",
                            "scope": 5883,
                            "src": "871:22:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            "typeName": {
                              "id": 5848,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "871:15:35",
                              "stateMutability": "payable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5852,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5850,
                            "name": "_lastAppendedDataAsSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5773,
                            "src": "896:25:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_address_payable_$",
                              "typeString": "function () pure returns (address payable)"
                            }
                          },
                          "id": 5851,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "896:27:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "871:52:35"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5862,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 5858,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5853,
                              "name": "msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5844,
                              "src": "937:9:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "id": 5856,
                                  "name": "_forwarderRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5800,
                                  "src": "958:18:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IForwarderRegistry_$5764",
                                    "typeString": "contract IForwarderRegistry"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IForwarderRegistry_$5764",
                                    "typeString": "contract IForwarderRegistry"
                                  }
                                ],
                                "id": 5855,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "950:7:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5854,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "950:7:35",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5857,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "950:27:35",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "937:40:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 5861,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5859,
                              "name": "msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5844,
                              "src": "981:9:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 5860,
                              "name": "_universalForwarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5802,
                              "src": "994:19:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "981:32:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "937:76:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5866,
                        "nodeType": "IfStatement",
                        "src": "933:166:35",
                        "trueBody": {
                          "id": 5865,
                          "nodeType": "Block",
                          "src": "1015:84:35",
                          "statements": [
                            {
                              "expression": {
                                "id": 5863,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5849,
                                "src": "1082:6:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "functionReturnParameters": 5842,
                              "id": 5864,
                              "nodeType": "Return",
                              "src": "1075:13:35"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5876,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            "id": 5870,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5867,
                              "name": "msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5844,
                              "src": "1496:9:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "expression": {
                                "id": 5868,
                                "name": "tx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -26,
                                "src": "1509:2:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_transaction",
                                  "typeString": "tx"
                                }
                              },
                              "id": 5869,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "origin",
                              "nodeType": "MemberAccess",
                              "src": "1509:9:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "1496:22:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 5873,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5849,
                                "src": "1556:6:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "id": 5874,
                                "name": "msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5844,
                                "src": "1564:9:35",
                                "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": 5871,
                                "name": "_forwarderRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5800,
                                "src": "1522:18:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IForwarderRegistry_$5764",
                                  "typeString": "contract IForwarderRegistry"
                                }
                              },
                              "id": 5872,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isForwarderFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5763,
                              "src": "1522:33:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_bool_$",
                                "typeString": "function (address,address) view external returns (bool)"
                              }
                            },
                            "id": 5875,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1522:52:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1496:78:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5880,
                        "nodeType": "IfStatement",
                        "src": "1492:122:35",
                        "trueBody": {
                          "id": 5879,
                          "nodeType": "Block",
                          "src": "1576:38:35",
                          "statements": [
                            {
                              "expression": {
                                "id": 5877,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5849,
                                "src": "1597:6:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "functionReturnParameters": 5842,
                              "id": 5878,
                              "nodeType": "Return",
                              "src": "1590:13:35"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 5881,
                          "name": "msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5844,
                          "src": "1631:9:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 5842,
                        "id": 5882,
                        "nodeType": "Return",
                        "src": "1624:16:35"
                      }
                    ]
                  },
                  "id": 5884,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5839,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "762:2:35"
                  },
                  "returnParameters": {
                    "id": 5842,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5841,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5884,
                        "src": "796:15:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 5840,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "796:15:35",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "795:17:35"
                  },
                  "scope": 5930,
                  "src": "743:904:35",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5928,
                    "nodeType": "Block",
                    "src": "1720:603:35",
                    "statements": [
                      {
                        "assignments": [
                          5890
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5890,
                            "mutability": "mutable",
                            "name": "msgSender",
                            "nodeType": "VariableDeclaration",
                            "scope": 5928,
                            "src": "1730:25:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            "typeName": {
                              "id": 5889,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1730:15:35",
                              "stateMutability": "payable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5893,
                        "initialValue": {
                          "expression": {
                            "id": 5891,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1758:3:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 5892,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1758:10:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1730:38:35"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5903,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 5899,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5894,
                              "name": "msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5890,
                              "src": "1782:9:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "id": 5897,
                                  "name": "_forwarderRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5800,
                                  "src": "1803:18:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IForwarderRegistry_$5764",
                                    "typeString": "contract IForwarderRegistry"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IForwarderRegistry_$5764",
                                    "typeString": "contract IForwarderRegistry"
                                  }
                                ],
                                "id": 5896,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1795:7:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5895,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1795:7:35",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5898,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1795:27:35",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "1782:40:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 5902,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5900,
                              "name": "msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5890,
                              "src": "1826:9:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 5901,
                              "name": "_universalForwarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5802,
                              "src": "1839:19:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "1826:32:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1782:76:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5908,
                        "nodeType": "IfStatement",
                        "src": "1778:197:35",
                        "trueBody": {
                          "id": 5907,
                          "nodeType": "Block",
                          "src": "1860:115:35",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 5904,
                                  "name": "_msgDataAssuming20BytesAppendedData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5788,
                                  "src": "1927:35:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes_calldata_ptr_$",
                                    "typeString": "function () pure returns (bytes calldata)"
                                  }
                                },
                                "id": 5905,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1927:37:35",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "functionReturnParameters": 5888,
                              "id": 5906,
                              "nodeType": "Return",
                              "src": "1920:44:35"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            "id": 5912,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5909,
                              "name": "msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5890,
                              "src": "2122:9:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "expression": {
                                "id": 5910,
                                "name": "tx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -26,
                                "src": "2135:2:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_transaction",
                                  "typeString": "tx"
                                }
                              },
                              "id": 5911,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "origin",
                              "nodeType": "MemberAccess",
                              "src": "2135:9:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "2122:22:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "arguments": [
                              {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 5915,
                                  "name": "_lastAppendedDataAsSender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5773,
                                  "src": "2182:25:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_address_payable_$",
                                    "typeString": "function () pure returns (address payable)"
                                  }
                                },
                                "id": 5916,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2182:27:35",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "id": 5917,
                                "name": "msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5890,
                                "src": "2211:9:35",
                                "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": 5913,
                                "name": "_forwarderRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5800,
                                "src": "2148:18:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IForwarderRegistry_$5764",
                                  "typeString": "contract IForwarderRegistry"
                                }
                              },
                              "id": 5914,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isForwarderFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5763,
                              "src": "2148:33:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_bool_$",
                                "typeString": "function (address,address) view external returns (bool)"
                              }
                            },
                            "id": 5918,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2148:73:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2122:99:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5924,
                        "nodeType": "IfStatement",
                        "src": "2118:174:35",
                        "trueBody": {
                          "id": 5923,
                          "nodeType": "Block",
                          "src": "2223:69:35",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 5920,
                                  "name": "_msgDataAssuming20BytesAppendedData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5788,
                                  "src": "2244:35:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes_calldata_ptr_$",
                                    "typeString": "function () pure returns (bytes calldata)"
                                  }
                                },
                                "id": 5921,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2244:37:35",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "functionReturnParameters": 5888,
                              "id": 5922,
                              "nodeType": "Return",
                              "src": "2237:44:35"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "expression": {
                            "id": 5925,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "2308:3:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 5926,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "src": "2308:8:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 5888,
                        "id": 5927,
                        "nodeType": "Return",
                        "src": "2301:15:35"
                      }
                    ]
                  },
                  "id": 5929,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5885,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1670:2:35"
                  },
                  "returnParameters": {
                    "id": 5888,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5887,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5929,
                        "src": "1704:14:35",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5886,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1704:5:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1703:16:35"
                  },
                  "scope": 5930,
                  "src": "1653:670:35",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 5931,
              "src": "156:2169:35"
            }
          ],
          "src": "32:2294:35"
        },
        "id": 35
      }
    }
  }
}
