{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name_",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol_",
          "type": "string"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "approved",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "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"
        }
      ],
      "name": "balanceOf",
      "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": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "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": "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": "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": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "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"
    }
  ],
  "allSourcePaths": {
    "16": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/token/ERC721/ERC721.sol",
    "17": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/token/ERC721/IERC721.sol",
    "18": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/token/ERC721/IERC721Receiver.sol",
    "21": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/token/ERC721/extensions/IERC721Metadata.sol",
    "22": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/utils/Address.sol",
    "23": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/utils/Context.sol",
    "25": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/utils/Strings.sol",
    "28": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/utils/introspection/ERC165.sol",
    "29": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/utils/introspection/IERC165.sol",
    "30": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/utils/math/Math.sol"
  },
  "ast": {
    "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/token/ERC721/ERC721.sol",
    "exportedSymbols": {
      "Address": [
        17676
      ],
      "Context": [
        16878
      ],
      "ERC165": [
        17700
      ],
      "ERC721": [
        15797
      ],
      "IERC165": [
        17712
      ],
      "IERC721": [
        16778
      ],
      "IERC721Metadata": [
        17346
      ],
      "IERC721Receiver": [
        17319
      ],
      "Math": [
        13636
      ],
      "Strings": [
        17301
      ]
    },
    "id": 15798,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 14872,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "107:23:16"
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/token/ERC721/IERC721.sol",
        "file": "./IERC721.sol",
        "id": 14873,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 15798,
        "sourceUnit": 16779,
        "src": "132:23:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/token/ERC721/IERC721Receiver.sol",
        "file": "./IERC721Receiver.sol",
        "id": 14874,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 15798,
        "sourceUnit": 17320,
        "src": "156:31:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/token/ERC721/extensions/IERC721Metadata.sol",
        "file": "./extensions/IERC721Metadata.sol",
        "id": 14875,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 15798,
        "sourceUnit": 17347,
        "src": "188:42:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/utils/Address.sol",
        "file": "../../utils/Address.sol",
        "id": 14876,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 15798,
        "sourceUnit": 17677,
        "src": "231:33:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/utils/Context.sol",
        "file": "../../utils/Context.sol",
        "id": 14877,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 15798,
        "sourceUnit": 16879,
        "src": "265:33:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/utils/Strings.sol",
        "file": "../../utils/Strings.sol",
        "id": 14878,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 15798,
        "sourceUnit": 17302,
        "src": "299:33:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/utils/introspection/ERC165.sol",
        "file": "../../utils/introspection/ERC165.sol",
        "id": 14879,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 15798,
        "sourceUnit": 17701,
        "src": "333:46:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 14881,
              "name": "Context",
              "nameLocations": [
                "647:7:16"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 16878,
              "src": "647:7:16"
            },
            "id": 14882,
            "nodeType": "InheritanceSpecifier",
            "src": "647:7:16"
          },
          {
            "baseName": {
              "id": 14883,
              "name": "ERC165",
              "nameLocations": [
                "656:6:16"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 17700,
              "src": "656:6:16"
            },
            "id": 14884,
            "nodeType": "InheritanceSpecifier",
            "src": "656:6:16"
          },
          {
            "baseName": {
              "id": 14885,
              "name": "IERC721",
              "nameLocations": [
                "664:7:16"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 16778,
              "src": "664:7:16"
            },
            "id": 14886,
            "nodeType": "InheritanceSpecifier",
            "src": "664:7:16"
          },
          {
            "baseName": {
              "id": 14887,
              "name": "IERC721Metadata",
              "nameLocations": [
                "673:15:16"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 17346,
              "src": "673:15:16"
            },
            "id": 14888,
            "nodeType": "InheritanceSpecifier",
            "src": "673:15:16"
          }
        ],
        "canonicalName": "ERC721",
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 14880,
          "nodeType": "StructuredDocumentation",
          "src": "381:246:16",
          "text": " @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."
        },
        "fullyImplemented": true,
        "id": 15797,
        "linearizedBaseContracts": [
          15797,
          17346,
          16778,
          17700,
          17712,
          16878
        ],
        "name": "ERC721",
        "nameLocation": "637:6:16",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "global": false,
            "id": 14891,
            "libraryName": {
              "id": 14889,
              "name": "Address",
              "nameLocations": [
                "701:7:16"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 17676,
              "src": "701:7:16"
            },
            "nodeType": "UsingForDirective",
            "src": "695:26:16",
            "typeName": {
              "id": 14890,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "713:7:16",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            }
          },
          {
            "global": false,
            "id": 14894,
            "libraryName": {
              "id": 14892,
              "name": "Strings",
              "nameLocations": [
                "732:7:16"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 17301,
              "src": "732:7:16"
            },
            "nodeType": "UsingForDirective",
            "src": "726:26:16",
            "typeName": {
              "id": 14893,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "744:7:16",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": false,
            "id": 14896,
            "mutability": "mutable",
            "name": "_name",
            "nameLocation": "791:5:16",
            "nodeType": "VariableDeclaration",
            "scope": 15797,
            "src": "776:20:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 14895,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "776:6:16",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 14898,
            "mutability": "mutable",
            "name": "_symbol",
            "nameLocation": "838:7:16",
            "nodeType": "VariableDeclaration",
            "scope": 15797,
            "src": "823:22:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 14897,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "823:6:16",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 14902,
            "mutability": "mutable",
            "name": "_owners",
            "nameLocation": "934:7:16",
            "nodeType": "VariableDeclaration",
            "scope": 15797,
            "src": "898:43:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
              "typeString": "mapping(uint256 => address)"
            },
            "typeName": {
              "id": 14901,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 14899,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "906:7:16",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "898:27:16",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                "typeString": "mapping(uint256 => address)"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 14900,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "917:7:16",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 14906,
            "mutability": "mutable",
            "name": "_balances",
            "nameLocation": "1028:9:16",
            "nodeType": "VariableDeclaration",
            "scope": 15797,
            "src": "992:45:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 14905,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 14903,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1000:7:16",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "992:27:16",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 14904,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1011:7:16",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 14910,
            "mutability": "mutable",
            "name": "_tokenApprovals",
            "nameLocation": "1129:15:16",
            "nodeType": "VariableDeclaration",
            "scope": 15797,
            "src": "1093:51:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
              "typeString": "mapping(uint256 => address)"
            },
            "typeName": {
              "id": 14909,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 14907,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1101:7:16",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "1093:27:16",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                "typeString": "mapping(uint256 => address)"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 14908,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1112:7:16",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 14916,
            "mutability": "mutable",
            "name": "_operatorApprovals",
            "nameLocation": "1252:18:16",
            "nodeType": "VariableDeclaration",
            "scope": 15797,
            "src": "1199:71:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
              "typeString": "mapping(address => mapping(address => bool))"
            },
            "typeName": {
              "id": 14915,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 14911,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1207:7:16",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1199:44:16",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                "typeString": "mapping(address => mapping(address => bool))"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 14914,
                "keyName": "",
                "keyNameLocation": "-1:-1:-1",
                "keyType": {
                  "id": 14912,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1226:7:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "nodeType": "Mapping",
                "src": "1218:24:16",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                  "typeString": "mapping(address => bool)"
                },
                "valueName": "",
                "valueNameLocation": "-1:-1:-1",
                "valueType": {
                  "id": 14913,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1237:4:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                }
              }
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 14932,
              "nodeType": "Block",
              "src": "1446:57:16",
              "statements": [
                {
                  "expression": {
                    "id": 14926,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 14924,
                      "name": "_name",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14896,
                      "src": "1456:5:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 14925,
                      "name": "name_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14919,
                      "src": "1464:5:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1456:13:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 14927,
                  "nodeType": "ExpressionStatement",
                  "src": "1456:13:16"
                },
                {
                  "expression": {
                    "id": 14930,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 14928,
                      "name": "_symbol",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14898,
                      "src": "1479:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 14929,
                      "name": "symbol_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14921,
                      "src": "1489:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1479:17:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 14931,
                  "nodeType": "ExpressionStatement",
                  "src": "1479:17:16"
                }
              ]
            },
            "documentation": {
              "id": 14917,
              "nodeType": "StructuredDocumentation",
              "src": "1277:108:16",
              "text": " @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."
            },
            "id": 14933,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14922,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14919,
                  "mutability": "mutable",
                  "name": "name_",
                  "nameLocation": "1416:5:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 14933,
                  "src": "1402:19:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14918,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1402:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14921,
                  "mutability": "mutable",
                  "name": "symbol_",
                  "nameLocation": "1437:7:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 14933,
                  "src": "1423:21:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14920,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1423:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1401:44:16"
            },
            "returnParameters": {
              "id": 14923,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1446:0:16"
            },
            "scope": 15797,
            "src": "1390:113:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              17699,
              17711
            ],
            "body": {
              "id": 14963,
              "nodeType": "Block",
              "src": "1678:192:16",
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 14961,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 14956,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "commonType": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "id": 14949,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 14944,
                          "name": "interfaceId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14936,
                          "src": "1707:11:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 14946,
                                "name": "IERC721",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16778,
                                "src": "1727:7:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC721_$16778_$",
                                  "typeString": "type(contract IERC721)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_type$_t_contract$_IERC721_$16778_$",
                                  "typeString": "type(contract IERC721)"
                                }
                              ],
                              "id": 14945,
                              "name": "type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -27,
                              "src": "1722:4:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 14947,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1722:13:16",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721_$16778",
                              "typeString": "type(contract IERC721)"
                            }
                          },
                          "id": 14948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1736:11:16",
                          "memberName": "interfaceId",
                          "nodeType": "MemberAccess",
                          "src": "1722:25:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "src": "1707:40:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "||",
                      "rightExpression": {
                        "commonType": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "id": 14955,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 14950,
                          "name": "interfaceId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14936,
                          "src": "1763:11:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 14952,
                                "name": "IERC721Metadata",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17346,
                                "src": "1783:15:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$17346_$",
                                  "typeString": "type(contract IERC721Metadata)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$17346_$",
                                  "typeString": "type(contract IERC721Metadata)"
                                }
                              ],
                              "id": 14951,
                              "name": "type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -27,
                              "src": "1778:4:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 14953,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1778:21:16",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Metadata_$17346",
                              "typeString": "type(contract IERC721Metadata)"
                            }
                          },
                          "id": 14954,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1800:11:16",
                          "memberName": "interfaceId",
                          "nodeType": "MemberAccess",
                          "src": "1778:33:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "src": "1763:48:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "1707:104:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "arguments": [
                        {
                          "id": 14959,
                          "name": "interfaceId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14936,
                          "src": "1851:11:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        ],
                        "expression": {
                          "id": 14957,
                          "name": "super",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -25,
                          "src": "1827:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_super$_ERC721_$15797_$",
                            "typeString": "type(contract super ERC721)"
                          }
                        },
                        "id": 14958,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1833:17:16",
                        "memberName": "supportsInterface",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17699,
                        "src": "1827:23:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                          "typeString": "function (bytes4) view returns (bool)"
                        }
                      },
                      "id": 14960,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1827:36:16",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1707:156:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 14943,
                  "id": 14962,
                  "nodeType": "Return",
                  "src": "1688:175:16"
                }
              ]
            },
            "documentation": {
              "id": 14934,
              "nodeType": "StructuredDocumentation",
              "src": "1509:56:16",
              "text": " @dev See {IERC165-supportsInterface}."
            },
            "functionSelector": "01ffc9a7",
            "id": 14964,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "supportsInterface",
            "nameLocation": "1579:17:16",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14940,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "id": 14938,
                  "name": "ERC165",
                  "nameLocations": [
                    "1646:6:16"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 17700,
                  "src": "1646:6:16"
                },
                {
                  "id": 14939,
                  "name": "IERC165",
                  "nameLocations": [
                    "1654:7:16"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 17712,
                  "src": "1654:7:16"
                }
              ],
              "src": "1637:25:16"
            },
            "parameters": {
              "id": 14937,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14936,
                  "mutability": "mutable",
                  "name": "interfaceId",
                  "nameLocation": "1604:11:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 14964,
                  "src": "1597:18:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 14935,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1597:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1596:20:16"
            },
            "returnParameters": {
              "id": 14943,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14942,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 14964,
                  "src": "1672:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14941,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1672:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1671:6:16"
            },
            "scope": 15797,
            "src": "1570:300:16",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              16703
            ],
            "body": {
              "id": 14987,
              "nodeType": "Block",
              "src": "2010:123:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 14979,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 14974,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14967,
                          "src": "2028:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 14977,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2045:1:16",
                              "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": 14976,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2037:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 14975,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2037:7:16",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 14978,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2037:10:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2028:19:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e6572",
                        "id": 14980,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2049:43:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159",
                          "typeString": "literal_string \"ERC721: address zero is not a valid owner\""
                        },
                        "value": "ERC721: address zero is not a valid owner"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159",
                          "typeString": "literal_string \"ERC721: address zero is not a valid owner\""
                        }
                      ],
                      "id": 14973,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2020:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14981,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2020:73:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14982,
                  "nodeType": "ExpressionStatement",
                  "src": "2020:73:16"
                },
                {
                  "expression": {
                    "baseExpression": {
                      "id": 14983,
                      "name": "_balances",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14906,
                      "src": "2110:9:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 14985,
                    "indexExpression": {
                      "id": 14984,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14967,
                      "src": "2120:5:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2110:16:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 14972,
                  "id": 14986,
                  "nodeType": "Return",
                  "src": "2103:23:16"
                }
              ]
            },
            "documentation": {
              "id": 14965,
              "nodeType": "StructuredDocumentation",
              "src": "1876:48:16",
              "text": " @dev See {IERC721-balanceOf}."
            },
            "functionSelector": "70a08231",
            "id": 14988,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "balanceOf",
            "nameLocation": "1938:9:16",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14969,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1983:8:16"
            },
            "parameters": {
              "id": 14968,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14967,
                  "mutability": "mutable",
                  "name": "owner",
                  "nameLocation": "1956:5:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 14988,
                  "src": "1948:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14966,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1948:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1947:15:16"
            },
            "returnParameters": {
              "id": 14972,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14971,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 14988,
                  "src": "2001:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14970,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2001:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2000:9:16"
            },
            "scope": 15797,
            "src": "1929:204:16",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              16711
            ],
            "body": {
              "id": 15015,
              "nodeType": "Block",
              "src": "2271:138:16",
              "statements": [
                {
                  "assignments": [
                    14998
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14998,
                      "mutability": "mutable",
                      "name": "owner",
                      "nameLocation": "2289:5:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 15015,
                      "src": "2281:13:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 14997,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2281:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15002,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 15000,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14991,
                        "src": "2306:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 14999,
                      "name": "_ownerOf",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15298,
                      "src": "2297:8:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                        "typeString": "function (uint256) view returns (address)"
                      }
                    },
                    "id": 15001,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2297:17:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2281:33:16"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 15009,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 15004,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14998,
                          "src": "2332:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 15007,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2349:1:16",
                              "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": 15006,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2341:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 15005,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2341:7:16",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15008,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2341:10:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2332:19:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a20696e76616c696420746f6b656e204944",
                        "id": 15010,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2353:26:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f",
                          "typeString": "literal_string \"ERC721: invalid token ID\""
                        },
                        "value": "ERC721: invalid token ID"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f",
                          "typeString": "literal_string \"ERC721: invalid token ID\""
                        }
                      ],
                      "id": 15003,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2324:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 15011,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2324:56:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15012,
                  "nodeType": "ExpressionStatement",
                  "src": "2324:56:16"
                },
                {
                  "expression": {
                    "id": 15013,
                    "name": "owner",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14998,
                    "src": "2397:5:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 14996,
                  "id": 15014,
                  "nodeType": "Return",
                  "src": "2390:12:16"
                }
              ]
            },
            "documentation": {
              "id": 14989,
              "nodeType": "StructuredDocumentation",
              "src": "2139:46:16",
              "text": " @dev See {IERC721-ownerOf}."
            },
            "functionSelector": "6352211e",
            "id": 15016,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "ownerOf",
            "nameLocation": "2199:7:16",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14993,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2244:8:16"
            },
            "parameters": {
              "id": 14992,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14991,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "2215:7:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15016,
                  "src": "2207:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14990,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2207:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2206:17:16"
            },
            "returnParameters": {
              "id": 14996,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14995,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15016,
                  "src": "2262:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14994,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2262:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2261:9:16"
            },
            "scope": 15797,
            "src": "2190:219:16",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              17331
            ],
            "body": {
              "id": 15025,
              "nodeType": "Block",
              "src": "2540:29:16",
              "statements": [
                {
                  "expression": {
                    "id": 15023,
                    "name": "_name",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14896,
                    "src": "2557:5:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 15022,
                  "id": 15024,
                  "nodeType": "Return",
                  "src": "2550:12:16"
                }
              ]
            },
            "documentation": {
              "id": 15017,
              "nodeType": "StructuredDocumentation",
              "src": "2415:51:16",
              "text": " @dev See {IERC721Metadata-name}."
            },
            "functionSelector": "06fdde03",
            "id": 15026,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "name",
            "nameLocation": "2480:4:16",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 15019,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2507:8:16"
            },
            "parameters": {
              "id": 15018,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2484:2:16"
            },
            "returnParameters": {
              "id": 15022,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15021,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15026,
                  "src": "2525:13:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15020,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2525:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2524:15:16"
            },
            "scope": 15797,
            "src": "2471:98:16",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              17337
            ],
            "body": {
              "id": 15035,
              "nodeType": "Block",
              "src": "2704:31:16",
              "statements": [
                {
                  "expression": {
                    "id": 15033,
                    "name": "_symbol",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14898,
                    "src": "2721:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 15032,
                  "id": 15034,
                  "nodeType": "Return",
                  "src": "2714:14:16"
                }
              ]
            },
            "documentation": {
              "id": 15027,
              "nodeType": "StructuredDocumentation",
              "src": "2575:53:16",
              "text": " @dev See {IERC721Metadata-symbol}."
            },
            "functionSelector": "95d89b41",
            "id": 15036,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "symbol",
            "nameLocation": "2642:6:16",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 15029,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2671:8:16"
            },
            "parameters": {
              "id": 15028,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2648:2:16"
            },
            "returnParameters": {
              "id": 15032,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15031,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15036,
                  "src": "2689:13:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15030,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2689:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2688:15:16"
            },
            "scope": 15797,
            "src": "2633:102:16",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              17345
            ],
            "body": {
              "id": 15074,
              "nodeType": "Block",
              "src": "2889:188:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 15046,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15039,
                        "src": "2914:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 15045,
                      "name": "_requireMinted",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15693,
                      "src": "2899:14:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) view"
                      }
                    },
                    "id": 15047,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2899:23:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15048,
                  "nodeType": "ExpressionStatement",
                  "src": "2899:23:16"
                },
                {
                  "assignments": [
                    15050
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15050,
                      "mutability": "mutable",
                      "name": "baseURI",
                      "nameLocation": "2947:7:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 15074,
                      "src": "2933:21:16",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 15049,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2933:6:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15053,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 15051,
                      "name": "_baseURI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15084,
                      "src": "2957:8:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$",
                        "typeString": "function () view returns (string memory)"
                      }
                    },
                    "id": 15052,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2957:10:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2933:34:16"
                },
                {
                  "expression": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 15060,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "arguments": [
                            {
                              "id": 15056,
                              "name": "baseURI",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15050,
                              "src": "2990:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 15055,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2984:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 15054,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2984:5:16",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15057,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2984:14:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 15058,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2999:6:16",
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "2984:21:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 15059,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3008:1:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "2984:25:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "hexValue": "",
                      "id": 15071,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3068:2:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                        "typeString": "literal_string \"\""
                      },
                      "value": ""
                    },
                    "id": 15072,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "2984:86:16",
                    "trueExpression": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "id": 15065,
                              "name": "baseURI",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15050,
                              "src": "3036:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 15066,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15039,
                                  "src": "3045:7:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 15067,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "3053:8:16",
                                "memberName": "toString",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17184,
                                "src": "3045:16:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (string memory)"
                                }
                              },
                              "id": 15068,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3045:18:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "expression": {
                              "id": 15063,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "3019:3:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 15064,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "3023:12:16",
                            "memberName": "encodePacked",
                            "nodeType": "MemberAccess",
                            "src": "3019:16:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 15069,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3019:45:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 15062,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "3012:6:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                          "typeString": "type(string storage pointer)"
                        },
                        "typeName": {
                          "id": 15061,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3012:6:16",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15070,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3012:53:16",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 15044,
                  "id": 15073,
                  "nodeType": "Return",
                  "src": "2977:93:16"
                }
              ]
            },
            "documentation": {
              "id": 15037,
              "nodeType": "StructuredDocumentation",
              "src": "2741:55:16",
              "text": " @dev See {IERC721Metadata-tokenURI}."
            },
            "functionSelector": "c87b56dd",
            "id": 15075,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "tokenURI",
            "nameLocation": "2810:8:16",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 15041,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2856:8:16"
            },
            "parameters": {
              "id": 15040,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15039,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "2827:7:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15075,
                  "src": "2819:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15038,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2819:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2818:17:16"
            },
            "returnParameters": {
              "id": 15044,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15043,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15075,
                  "src": "2874:13:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15042,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2874:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2873:15:16"
            },
            "scope": 15797,
            "src": "2801:276:16",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15083,
              "nodeType": "Block",
              "src": "3385:26:16",
              "statements": [
                {
                  "expression": {
                    "hexValue": "",
                    "id": 15081,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3402:2:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                      "typeString": "literal_string \"\""
                    },
                    "value": ""
                  },
                  "functionReturnParameters": 15080,
                  "id": 15082,
                  "nodeType": "Return",
                  "src": "3395:9:16"
                }
              ]
            },
            "documentation": {
              "id": 15076,
              "nodeType": "StructuredDocumentation",
              "src": "3083:231:16",
              "text": " @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."
            },
            "id": 15084,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_baseURI",
            "nameLocation": "3328:8:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15077,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3336:2:16"
            },
            "returnParameters": {
              "id": 15080,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15079,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15084,
                  "src": "3370:13:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15078,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3370:6:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3369:15:16"
            },
            "scope": 15797,
            "src": "3319:92:16",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              16751
            ],
            "body": {
              "id": 15126,
              "nodeType": "Block",
              "src": "3538:336:16",
              "statements": [
                {
                  "assignments": [
                    15094
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15094,
                      "mutability": "mutable",
                      "name": "owner",
                      "nameLocation": "3556:5:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 15126,
                      "src": "3548:13:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 15093,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3548:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15099,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 15097,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15089,
                        "src": "3579:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 15095,
                        "name": "ERC721",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15797,
                        "src": "3564:6:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC721_$15797_$",
                          "typeString": "type(contract ERC721)"
                        }
                      },
                      "id": 15096,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3571:7:16",
                      "memberName": "ownerOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15016,
                      "src": "3564:14:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                        "typeString": "function (uint256) view returns (address)"
                      }
                    },
                    "id": 15098,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3564:23:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3548:39:16"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 15103,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 15101,
                          "name": "to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15087,
                          "src": "3605:2:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "id": 15102,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15094,
                          "src": "3611:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3605:11:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572",
                        "id": 15104,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3618:35:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942",
                          "typeString": "literal_string \"ERC721: approval to current owner\""
                        },
                        "value": "ERC721: approval to current owner"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942",
                          "typeString": "literal_string \"ERC721: approval to current owner\""
                        }
                      ],
                      "id": 15100,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3597:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 15105,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3597:57:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15106,
                  "nodeType": "ExpressionStatement",
                  "src": "3597:57:16"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 15117,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 15111,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 15108,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16868,
                              "src": "3686:10:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 15109,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3686:12:16",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 15110,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15094,
                            "src": "3702:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3686:21:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "arguments": [
                            {
                              "id": 15113,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15094,
                              "src": "3728:5:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 15114,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16868,
                                "src": "3735:10:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 15115,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3735:12:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 15112,
                            "name": "isApprovedForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15180,
                            "src": "3711:16:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 15116,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3711:37:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3686:62:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c",
                        "id": 15118,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3762:63:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83",
                          "typeString": "literal_string \"ERC721: approve caller is not token owner or approved for all\""
                        },
                        "value": "ERC721: approve caller is not token owner or approved for all"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83",
                          "typeString": "literal_string \"ERC721: approve caller is not token owner or approved for all\""
                        }
                      ],
                      "id": 15107,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3665:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 15119,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3665:170:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15120,
                  "nodeType": "ExpressionStatement",
                  "src": "3665:170:16"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 15122,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15087,
                        "src": "3855:2:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15123,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15089,
                        "src": "3859:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 15121,
                      "name": "_approve",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15647,
                      "src": "3846:8:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 15124,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3846:21:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15125,
                  "nodeType": "ExpressionStatement",
                  "src": "3846:21:16"
                }
              ]
            },
            "documentation": {
              "id": 15085,
              "nodeType": "StructuredDocumentation",
              "src": "3417:46:16",
              "text": " @dev See {IERC721-approve}."
            },
            "functionSelector": "095ea7b3",
            "id": 15127,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "approve",
            "nameLocation": "3477:7:16",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 15091,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3529:8:16"
            },
            "parameters": {
              "id": 15090,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15087,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "3493:2:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15127,
                  "src": "3485:10:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15086,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3485:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15089,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "3505:7:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15127,
                  "src": "3497:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15088,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3497:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3484:29:16"
            },
            "returnParameters": {
              "id": 15092,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3538:0:16"
            },
            "scope": 15797,
            "src": "3468:406:16",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              16767
            ],
            "body": {
              "id": 15144,
              "nodeType": "Block",
              "src": "4020:82:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 15137,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15130,
                        "src": "4045:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 15136,
                      "name": "_requireMinted",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15693,
                      "src": "4030:14:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) view"
                      }
                    },
                    "id": 15138,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4030:23:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15139,
                  "nodeType": "ExpressionStatement",
                  "src": "4030:23:16"
                },
                {
                  "expression": {
                    "baseExpression": {
                      "id": 15140,
                      "name": "_tokenApprovals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14910,
                      "src": "4071:15:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                        "typeString": "mapping(uint256 => address)"
                      }
                    },
                    "id": 15142,
                    "indexExpression": {
                      "id": 15141,
                      "name": "tokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15130,
                      "src": "4087:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4071:24:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 15135,
                  "id": 15143,
                  "nodeType": "Return",
                  "src": "4064:31:16"
                }
              ]
            },
            "documentation": {
              "id": 15128,
              "nodeType": "StructuredDocumentation",
              "src": "3880:50:16",
              "text": " @dev See {IERC721-getApproved}."
            },
            "functionSelector": "081812fc",
            "id": 15145,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getApproved",
            "nameLocation": "3944:11:16",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 15132,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3993:8:16"
            },
            "parameters": {
              "id": 15131,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15130,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "3964:7:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15145,
                  "src": "3956:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15129,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3956:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3955:17:16"
            },
            "returnParameters": {
              "id": 15135,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15134,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15145,
                  "src": "4011:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15133,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4011:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4010:9:16"
            },
            "scope": 15797,
            "src": "3935:167:16",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              16759
            ],
            "body": {
              "id": 15161,
              "nodeType": "Block",
              "src": "4253:69:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 15155,
                          "name": "_msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16868,
                          "src": "4282:10:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                            "typeString": "function () view returns (address)"
                          }
                        },
                        "id": 15156,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4282:12:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15157,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15148,
                        "src": "4296:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15158,
                        "name": "approved",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15150,
                        "src": "4306:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 15154,
                      "name": "_setApprovalForAll",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15679,
                      "src": "4263:18:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                        "typeString": "function (address,address,bool)"
                      }
                    },
                    "id": 15159,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4263:52:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15160,
                  "nodeType": "ExpressionStatement",
                  "src": "4263:52:16"
                }
              ]
            },
            "documentation": {
              "id": 15146,
              "nodeType": "StructuredDocumentation",
              "src": "4108:56:16",
              "text": " @dev See {IERC721-setApprovalForAll}."
            },
            "functionSelector": "a22cb465",
            "id": 15162,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setApprovalForAll",
            "nameLocation": "4178:17:16",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 15152,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4244:8:16"
            },
            "parameters": {
              "id": 15151,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15148,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "4204:8:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15162,
                  "src": "4196:16:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15147,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4196:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15150,
                  "mutability": "mutable",
                  "name": "approved",
                  "nameLocation": "4219:8:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15162,
                  "src": "4214:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15149,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4214:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4195:33:16"
            },
            "returnParameters": {
              "id": 15153,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4253:0:16"
            },
            "scope": 15797,
            "src": "4169:153:16",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              16777
            ],
            "body": {
              "id": 15179,
              "nodeType": "Block",
              "src": "4491:59:16",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "baseExpression": {
                        "id": 15173,
                        "name": "_operatorApprovals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14916,
                        "src": "4508:18:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                          "typeString": "mapping(address => mapping(address => bool))"
                        }
                      },
                      "id": 15175,
                      "indexExpression": {
                        "id": 15174,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15165,
                        "src": "4527:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "4508:25:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      }
                    },
                    "id": 15177,
                    "indexExpression": {
                      "id": 15176,
                      "name": "operator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15167,
                      "src": "4534:8:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4508:35:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 15172,
                  "id": 15178,
                  "nodeType": "Return",
                  "src": "4501:42:16"
                }
              ]
            },
            "documentation": {
              "id": 15163,
              "nodeType": "StructuredDocumentation",
              "src": "4328:55:16",
              "text": " @dev See {IERC721-isApprovedForAll}."
            },
            "functionSelector": "e985e9c5",
            "id": 15180,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isApprovedForAll",
            "nameLocation": "4397:16:16",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 15169,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4467:8:16"
            },
            "parameters": {
              "id": 15168,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15165,
                  "mutability": "mutable",
                  "name": "owner",
                  "nameLocation": "4422:5:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15180,
                  "src": "4414:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15164,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4414:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15167,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "4437:8:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15180,
                  "src": "4429:16:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15166,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4429:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4413:33:16"
            },
            "returnParameters": {
              "id": 15172,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15171,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15180,
                  "src": "4485:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15170,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4485:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4484:6:16"
            },
            "scope": 15797,
            "src": "4388:162:16",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              16743
            ],
            "body": {
              "id": 15206,
              "nodeType": "Block",
              "src": "4731:207:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 15193,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16868,
                              "src": "4820:10:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 15194,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4820:12:16",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15195,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15187,
                            "src": "4834:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 15192,
                          "name": "_isApprovedOrOwner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15350,
                          "src": "4801:18:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) view returns (bool)"
                          }
                        },
                        "id": 15196,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4801:41:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206f7220617070726f766564",
                        "id": 15197,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4844:47:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af",
                          "typeString": "literal_string \"ERC721: caller is not token owner or approved\""
                        },
                        "value": "ERC721: caller is not token owner or approved"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af",
                          "typeString": "literal_string \"ERC721: caller is not token owner or approved\""
                        }
                      ],
                      "id": 15191,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4793:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 15198,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4793:99:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15199,
                  "nodeType": "ExpressionStatement",
                  "src": "4793:99:16"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 15201,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15183,
                        "src": "4913:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15202,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15185,
                        "src": "4919:2:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15203,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15187,
                        "src": "4923:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 15200,
                      "name": "_transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15623,
                      "src": "4903:9:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 15204,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4903:28:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15205,
                  "nodeType": "ExpressionStatement",
                  "src": "4903:28:16"
                }
              ]
            },
            "documentation": {
              "id": 15181,
              "nodeType": "StructuredDocumentation",
              "src": "4556:51:16",
              "text": " @dev See {IERC721-transferFrom}."
            },
            "functionSelector": "23b872dd",
            "id": 15207,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "transferFrom",
            "nameLocation": "4621:12:16",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 15189,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4722:8:16"
            },
            "parameters": {
              "id": 15188,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15183,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "4651:4:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15207,
                  "src": "4643:12:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15182,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4643:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15185,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "4673:2:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15207,
                  "src": "4665:10:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15184,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4665:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15187,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "4693:7:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15207,
                  "src": "4685:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15186,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4685:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4633:73:16"
            },
            "returnParameters": {
              "id": 15190,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4731:0:16"
            },
            "scope": 15797,
            "src": "4612:326:16",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              16733
            ],
            "body": {
              "id": 15225,
              "nodeType": "Block",
              "src": "5127:56:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 15219,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15210,
                        "src": "5154:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15220,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15212,
                        "src": "5160:2:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15221,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15214,
                        "src": "5164:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 15222,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5173:2:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "id": 15218,
                      "name": "safeTransferFrom",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15226,
                        15256
                      ],
                      "referencedDeclaration": 15256,
                      "src": "5137:16:16",
                      "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": 15223,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5137:39:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15224,
                  "nodeType": "ExpressionStatement",
                  "src": "5137:39:16"
                }
              ]
            },
            "documentation": {
              "id": 15208,
              "nodeType": "StructuredDocumentation",
              "src": "4944:55:16",
              "text": " @dev See {IERC721-safeTransferFrom}."
            },
            "functionSelector": "42842e0e",
            "id": 15226,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "safeTransferFrom",
            "nameLocation": "5013:16:16",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 15216,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5118:8:16"
            },
            "parameters": {
              "id": 15215,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15210,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "5047:4:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15226,
                  "src": "5039:12:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15209,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5039:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15212,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "5069:2:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15226,
                  "src": "5061:10:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15211,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5061:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15214,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "5089:7:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15226,
                  "src": "5081:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15213,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5081:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5029:73:16"
            },
            "returnParameters": {
              "id": 15217,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5127:0:16"
            },
            "scope": 15797,
            "src": "5004:179:16",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              16723
            ],
            "body": {
              "id": 15255,
              "nodeType": "Block",
              "src": "5399:164:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 15241,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16868,
                              "src": "5436:10:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 15242,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5436:12:16",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15243,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15233,
                            "src": "5450:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 15240,
                          "name": "_isApprovedOrOwner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15350,
                          "src": "5417:18:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) view returns (bool)"
                          }
                        },
                        "id": 15244,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5417:41:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206f7220617070726f766564",
                        "id": 15245,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5460:47:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af",
                          "typeString": "literal_string \"ERC721: caller is not token owner or approved\""
                        },
                        "value": "ERC721: caller is not token owner or approved"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af",
                          "typeString": "literal_string \"ERC721: caller is not token owner or approved\""
                        }
                      ],
                      "id": 15239,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5409:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 15246,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5409:99:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15247,
                  "nodeType": "ExpressionStatement",
                  "src": "5409:99:16"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 15249,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15229,
                        "src": "5532:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15250,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15231,
                        "src": "5538:2:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15251,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15233,
                        "src": "5542:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 15252,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15235,
                        "src": "5551:4:16",
                        "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": 15248,
                      "name": "_safeTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15285,
                      "src": "5518:13:16",
                      "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": 15253,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5518:38:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15254,
                  "nodeType": "ExpressionStatement",
                  "src": "5518:38:16"
                }
              ]
            },
            "documentation": {
              "id": 15227,
              "nodeType": "StructuredDocumentation",
              "src": "5189:55:16",
              "text": " @dev See {IERC721-safeTransferFrom}."
            },
            "functionSelector": "b88d4fde",
            "id": 15256,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "safeTransferFrom",
            "nameLocation": "5258:16:16",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 15237,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5390:8:16"
            },
            "parameters": {
              "id": 15236,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15229,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "5292:4:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15256,
                  "src": "5284:12:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15228,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5284:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15231,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "5314:2:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15256,
                  "src": "5306:10:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15230,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5306:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15233,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "5334:7:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15256,
                  "src": "5326:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15232,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5326:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15235,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "5364:4:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15256,
                  "src": "5351:17:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 15234,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5351:5:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5274:100:16"
            },
            "returnParameters": {
              "id": 15238,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5399:0:16"
            },
            "scope": 15797,
            "src": "5249:314:16",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15284,
              "nodeType": "Block",
              "src": "6564:165:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 15269,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15259,
                        "src": "6584:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15270,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15261,
                        "src": "6590:2:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15271,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15263,
                        "src": "6594:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 15268,
                      "name": "_transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15623,
                      "src": "6574:9:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 15272,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6574:28:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15273,
                  "nodeType": "ExpressionStatement",
                  "src": "6574:28:16"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 15276,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15259,
                            "src": "6643:4:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15277,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15261,
                            "src": "6649:2:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15278,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15263,
                            "src": "6653:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15279,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15265,
                            "src": "6662:4:16",
                            "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": 15275,
                          "name": "_checkOnERC721Received",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15755,
                          "src": "6620:22:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256,bytes memory) returns (bool)"
                          }
                        },
                        "id": 15280,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6620:47:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572",
                        "id": 15281,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6669:52:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                          "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                        },
                        "value": "ERC721: transfer to non ERC721Receiver implementer"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                          "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                        }
                      ],
                      "id": 15274,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "6612:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 15282,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6612:110:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15283,
                  "nodeType": "ExpressionStatement",
                  "src": "6612:110:16"
                }
              ]
            },
            "documentation": {
              "id": 15257,
              "nodeType": "StructuredDocumentation",
              "src": "5569:850:16",
              "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."
            },
            "id": 15285,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_safeTransfer",
            "nameLocation": "6433:13:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15266,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15259,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "6464:4:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15285,
                  "src": "6456:12:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15258,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6456:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15261,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "6486:2:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15285,
                  "src": "6478:10:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15260,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6478:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15263,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "6506:7:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15285,
                  "src": "6498:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15262,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6498:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15265,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "6536:4:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15285,
                  "src": "6523:17:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 15264,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6523:5:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6446:100:16"
            },
            "returnParameters": {
              "id": 15267,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6564:0:16"
            },
            "scope": 15797,
            "src": "6424:305:16",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 15297,
              "nodeType": "Block",
              "src": "6913:40:16",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "id": 15293,
                      "name": "_owners",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14902,
                      "src": "6930:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                        "typeString": "mapping(uint256 => address)"
                      }
                    },
                    "id": 15295,
                    "indexExpression": {
                      "id": 15294,
                      "name": "tokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15288,
                      "src": "6938:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6930:16:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 15292,
                  "id": 15296,
                  "nodeType": "Return",
                  "src": "6923:23:16"
                }
              ]
            },
            "documentation": {
              "id": 15286,
              "nodeType": "StructuredDocumentation",
              "src": "6735:98:16",
              "text": " @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist"
            },
            "id": 15298,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_ownerOf",
            "nameLocation": "6847:8:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15289,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15288,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "6864:7:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15298,
                  "src": "6856:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15287,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6856:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6855:17:16"
            },
            "returnParameters": {
              "id": 15292,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15291,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15298,
                  "src": "6904:7:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15290,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6904:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6903:9:16"
            },
            "scope": 15797,
            "src": "6838:115:16",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 15315,
              "nodeType": "Block",
              "src": "7327:55:16",
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 15313,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "id": 15307,
                          "name": "tokenId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15301,
                          "src": "7353:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 15306,
                        "name": "_ownerOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15298,
                        "src": "7344:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                          "typeString": "function (uint256) view returns (address)"
                        }
                      },
                      "id": 15308,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7344:17:16",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 15311,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7373:1:16",
                          "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": 15310,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "7365:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 15309,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7365:7:16",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 15312,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7365:10:16",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "7344:31:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 15305,
                  "id": 15314,
                  "nodeType": "Return",
                  "src": "7337:38:16"
                }
              ]
            },
            "documentation": {
              "id": 15299,
              "nodeType": "StructuredDocumentation",
              "src": "6959:292:16",
              "text": " @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted (`_mint`),\n and stop existing when they are burned (`_burn`)."
            },
            "id": 15316,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_exists",
            "nameLocation": "7265:7:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15302,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15301,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "7281:7:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15316,
                  "src": "7273:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15300,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7273:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7272:17:16"
            },
            "returnParameters": {
              "id": 15305,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15304,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15316,
                  "src": "7321:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15303,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7321:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7320:6:16"
            },
            "scope": 15797,
            "src": "7256:126:16",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 15349,
              "nodeType": "Block",
              "src": "7639:162:16",
              "statements": [
                {
                  "assignments": [
                    15327
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15327,
                      "mutability": "mutable",
                      "name": "owner",
                      "nameLocation": "7657:5:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 15349,
                      "src": "7649:13:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 15326,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7649:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15332,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 15330,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15321,
                        "src": "7680:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 15328,
                        "name": "ERC721",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15797,
                        "src": "7665:6:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC721_$15797_$",
                          "typeString": "type(contract ERC721)"
                        }
                      },
                      "id": 15329,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "7672:7:16",
                      "memberName": "ownerOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15016,
                      "src": "7665:14:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                        "typeString": "function (uint256) view returns (address)"
                      }
                    },
                    "id": 15331,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7665:23:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7649:39:16"
                },
                {
                  "expression": {
                    "components": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 15346,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 15340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 15335,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 15333,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15319,
                              "src": "7706:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 15334,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15327,
                              "src": "7717:5:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "7706:16:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 15337,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15327,
                                "src": "7743:5:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 15338,
                                "name": "spender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15319,
                                "src": "7750:7:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 15336,
                              "name": "isApprovedForAll",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15180,
                              "src": "7726:16:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                "typeString": "function (address,address) view returns (bool)"
                              }
                            },
                            "id": 15339,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7726:32:16",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7706:52:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 15345,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 15342,
                                "name": "tokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15321,
                                "src": "7774:7:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 15341,
                              "name": "getApproved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15145,
                              "src": "7762:11:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                                "typeString": "function (uint256) view returns (address)"
                              }
                            },
                            "id": 15343,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7762:20:16",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 15344,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15319,
                            "src": "7786:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "7762:31:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "7706:87:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 15347,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "7705:89:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 15325,
                  "id": 15348,
                  "nodeType": "Return",
                  "src": "7698:96:16"
                }
              ]
            },
            "documentation": {
              "id": 15317,
              "nodeType": "StructuredDocumentation",
              "src": "7388:147:16",
              "text": " @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist."
            },
            "id": 15350,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_isApprovedOrOwner",
            "nameLocation": "7549:18:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15322,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15319,
                  "mutability": "mutable",
                  "name": "spender",
                  "nameLocation": "7576:7:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15350,
                  "src": "7568:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15318,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7568:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15321,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "7593:7:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15350,
                  "src": "7585:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15320,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7585:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7567:34:16"
            },
            "returnParameters": {
              "id": 15325,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15324,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15350,
                  "src": "7633:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15323,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7633:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7632:6:16"
            },
            "scope": 15797,
            "src": "7540:261:16",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 15364,
              "nodeType": "Block",
              "src": "8196:43:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 15359,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15353,
                        "src": "8216:2:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15360,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15355,
                        "src": "8220:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 15361,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8229:2:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "id": 15358,
                      "name": "_safeMint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15365,
                        15394
                      ],
                      "referencedDeclaration": 15394,
                      "src": "8206:9:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,bytes memory)"
                      }
                    },
                    "id": 15362,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8206:26:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15363,
                  "nodeType": "ExpressionStatement",
                  "src": "8206:26:16"
                }
              ]
            },
            "documentation": {
              "id": 15351,
              "nodeType": "StructuredDocumentation",
              "src": "7807:319:16",
              "text": " @dev Safely mints `tokenId` and transfers it to `to`.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."
            },
            "id": 15365,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_safeMint",
            "nameLocation": "8140:9:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15356,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15353,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "8158:2:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15365,
                  "src": "8150:10:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15352,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8150:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15355,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "8170:7:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15365,
                  "src": "8162:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15354,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8162:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8149:29:16"
            },
            "returnParameters": {
              "id": 15357,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8196:0:16"
            },
            "scope": 15797,
            "src": "8131:108:16",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 15393,
              "nodeType": "Block",
              "src": "8574:195:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 15376,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15368,
                        "src": "8590:2:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15377,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15370,
                        "src": "8594:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 15375,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15471,
                      "src": "8584:5:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 15378,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8584:18:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15379,
                  "nodeType": "ExpressionStatement",
                  "src": "8584:18:16"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 15384,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8664:1:16",
                                "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": 15383,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8656:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 15382,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "8656:7:16",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 15385,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8656:10:16",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15386,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15368,
                            "src": "8668:2:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15387,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15370,
                            "src": "8672:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15388,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15372,
                            "src": "8681:4:16",
                            "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": 15381,
                          "name": "_checkOnERC721Received",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15755,
                          "src": "8633:22:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256,bytes memory) returns (bool)"
                          }
                        },
                        "id": 15389,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8633:53:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572",
                        "id": 15390,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8700:52:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                          "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                        },
                        "value": "ERC721: transfer to non ERC721Receiver implementer"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                          "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                        }
                      ],
                      "id": 15380,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "8612:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 15391,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8612:150:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15392,
                  "nodeType": "ExpressionStatement",
                  "src": "8612:150:16"
                }
              ]
            },
            "documentation": {
              "id": 15366,
              "nodeType": "StructuredDocumentation",
              "src": "8245:210:16",
              "text": " @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."
            },
            "id": 15394,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_safeMint",
            "nameLocation": "8469:9:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15373,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15368,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "8496:2:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15394,
                  "src": "8488:10:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15367,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8488:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15370,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "8516:7:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15394,
                  "src": "8508:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15369,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8508:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15372,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "8546:4:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15394,
                  "src": "8533:17:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 15371,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "8533:5:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8478:78:16"
            },
            "returnParameters": {
              "id": 15374,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8574:0:16"
            },
            "scope": 15797,
            "src": "8460:309:16",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 15470,
              "nodeType": "Block",
              "src": "9152:859:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 15408,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 15403,
                          "name": "to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15397,
                          "src": "9170:2:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 15406,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9184:1:16",
                              "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": 15405,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "9176:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 15404,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "9176:7:16",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15407,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9176:10:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "9170:16:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373",
                        "id": 15409,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9188:34:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6",
                          "typeString": "literal_string \"ERC721: mint to the zero address\""
                        },
                        "value": "ERC721: mint to the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6",
                          "typeString": "literal_string \"ERC721: mint to the zero address\""
                        }
                      ],
                      "id": 15402,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "9162:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 15410,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9162:61:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15411,
                  "nodeType": "ExpressionStatement",
                  "src": "9162:61:16"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 15416,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "9241:17:16",
                        "subExpression": {
                          "arguments": [
                            {
                              "id": 15414,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15399,
                              "src": "9250:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 15413,
                            "name": "_exists",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15316,
                            "src": "9242:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (uint256) view returns (bool)"
                            }
                          },
                          "id": 15415,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9242:16:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564",
                        "id": 15417,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9260:30:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57",
                          "typeString": "literal_string \"ERC721: token already minted\""
                        },
                        "value": "ERC721: token already minted"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57",
                          "typeString": "literal_string \"ERC721: token already minted\""
                        }
                      ],
                      "id": 15412,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "9233:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 15418,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9233:58:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15419,
                  "nodeType": "ExpressionStatement",
                  "src": "9233:58:16"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 15423,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9331:1:16",
                            "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": 15422,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9323:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 15421,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9323:7:16",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 15424,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9323:10:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15425,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15397,
                        "src": "9335:2:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15426,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15399,
                        "src": "9339:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "31",
                        "id": 15427,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9348:1:16",
                        "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": 15420,
                      "name": "_beforeTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15768,
                      "src": "9302:20:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256)"
                      }
                    },
                    "id": 15428,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9302:48:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15429,
                  "nodeType": "ExpressionStatement",
                  "src": "9302:48:16"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 15434,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "9445:17:16",
                        "subExpression": {
                          "arguments": [
                            {
                              "id": 15432,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15399,
                              "src": "9454:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 15431,
                            "name": "_exists",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15316,
                            "src": "9446:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (uint256) view returns (bool)"
                            }
                          },
                          "id": 15433,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9446:16:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564",
                        "id": 15435,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9464:30:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57",
                          "typeString": "literal_string \"ERC721: token already minted\""
                        },
                        "value": "ERC721: token already minted"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57",
                          "typeString": "literal_string \"ERC721: token already minted\""
                        }
                      ],
                      "id": 15430,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "9437:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 15436,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9437:58:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15437,
                  "nodeType": "ExpressionStatement",
                  "src": "9437:58:16"
                },
                {
                  "id": 15444,
                  "nodeType": "UncheckedBlock",
                  "src": "9506:360:16",
                  "statements": [
                    {
                      "expression": {
                        "id": 15442,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "baseExpression": {
                            "id": 15438,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14906,
                            "src": "9837:9:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 15440,
                          "indexExpression": {
                            "id": 15439,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15397,
                            "src": "9847:2:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "9837:13:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "hexValue": "31",
                          "id": 15441,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9854:1:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "9837:18:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 15443,
                      "nodeType": "ExpressionStatement",
                      "src": "9837:18:16"
                    }
                  ]
                },
                {
                  "expression": {
                    "id": 15449,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 15445,
                        "name": "_owners",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14902,
                        "src": "9876:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 15447,
                      "indexExpression": {
                        "id": 15446,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15399,
                        "src": "9884:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9876:16:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 15448,
                      "name": "to",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15397,
                      "src": "9895:2:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "9876:21:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 15450,
                  "nodeType": "ExpressionStatement",
                  "src": "9876:21:16"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 15454,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9930:1:16",
                            "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": 15453,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9922:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 15452,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9922:7:16",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 15455,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9922:10:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15456,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15397,
                        "src": "9934:2:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15457,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15399,
                        "src": "9938:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 15451,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16677,
                      "src": "9913:8:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 15458,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9913:33:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15459,
                  "nodeType": "EmitStatement",
                  "src": "9908:38:16"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 15463,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9985:1:16",
                            "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": 15462,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9977:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 15461,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9977:7:16",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 15464,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9977:10:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15465,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15397,
                        "src": "9989:2:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15466,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15399,
                        "src": "9993:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "31",
                        "id": 15467,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10002:1:16",
                        "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": 15460,
                      "name": "_afterTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15781,
                      "src": "9957:19:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256)"
                      }
                    },
                    "id": 15468,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9957:47:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15469,
                  "nodeType": "ExpressionStatement",
                  "src": "9957:47:16"
                }
              ]
            },
            "documentation": {
              "id": 15395,
              "nodeType": "StructuredDocumentation",
              "src": "8775:311:16",
              "text": " @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."
            },
            "id": 15471,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_mint",
            "nameLocation": "9100:5:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15400,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15397,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "9114:2:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15471,
                  "src": "9106:10:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15396,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9106:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15399,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "9126:7:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15471,
                  "src": "9118:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15398,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9118:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9105:29:16"
            },
            "returnParameters": {
              "id": 15401,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9152:0:16"
            },
            "scope": 15797,
            "src": "9091:920:16",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 15537,
              "nodeType": "Block",
              "src": "10386:713:16",
              "statements": [
                {
                  "assignments": [
                    15478
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15478,
                      "mutability": "mutable",
                      "name": "owner",
                      "nameLocation": "10404:5:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 15537,
                      "src": "10396:13:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 15477,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "10396:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15483,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 15481,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15474,
                        "src": "10427:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 15479,
                        "name": "ERC721",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15797,
                        "src": "10412:6:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC721_$15797_$",
                          "typeString": "type(contract ERC721)"
                        }
                      },
                      "id": 15480,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "10419:7:16",
                      "memberName": "ownerOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15016,
                      "src": "10412:14:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                        "typeString": "function (uint256) view returns (address)"
                      }
                    },
                    "id": 15482,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10412:23:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10396:39:16"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 15485,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15478,
                        "src": "10467:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 15488,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10482:1:16",
                            "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": 15487,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10474:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 15486,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "10474:7:16",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 15489,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10474:10:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15490,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15474,
                        "src": "10486:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "31",
                        "id": 15491,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10495:1:16",
                        "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": 15484,
                      "name": "_beforeTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15768,
                      "src": "10446:20:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256)"
                      }
                    },
                    "id": 15492,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10446:51:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15493,
                  "nodeType": "ExpressionStatement",
                  "src": "10446:51:16"
                },
                {
                  "expression": {
                    "id": 15499,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15494,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15478,
                      "src": "10599:5:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 15497,
                          "name": "tokenId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15474,
                          "src": "10622:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 15495,
                          "name": "ERC721",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15797,
                          "src": "10607:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ERC721_$15797_$",
                            "typeString": "type(contract ERC721)"
                          }
                        },
                        "id": 15496,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "10614:7:16",
                        "memberName": "ownerOf",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15016,
                        "src": "10607:14:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                          "typeString": "function (uint256) view returns (address)"
                        }
                      },
                      "id": 15498,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10607:23:16",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "10599:31:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 15500,
                  "nodeType": "ExpressionStatement",
                  "src": "10599:31:16"
                },
                {
                  "expression": {
                    "id": 15504,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "10668:31:16",
                    "subExpression": {
                      "baseExpression": {
                        "id": 15501,
                        "name": "_tokenApprovals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14910,
                        "src": "10675:15:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 15503,
                      "indexExpression": {
                        "id": 15502,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15474,
                        "src": "10691:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "10675:24:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15505,
                  "nodeType": "ExpressionStatement",
                  "src": "10668:31:16"
                },
                {
                  "id": 15512,
                  "nodeType": "UncheckedBlock",
                  "src": "10710:237:16",
                  "statements": [
                    {
                      "expression": {
                        "id": 15510,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "baseExpression": {
                            "id": 15506,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14906,
                            "src": "10915:9:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 15508,
                          "indexExpression": {
                            "id": 15507,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15478,
                            "src": "10925:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "10915:16:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "hexValue": "31",
                          "id": 15509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10935:1:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "10915:21:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 15511,
                      "nodeType": "ExpressionStatement",
                      "src": "10915:21:16"
                    }
                  ]
                },
                {
                  "expression": {
                    "id": 15516,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "10956:23:16",
                    "subExpression": {
                      "baseExpression": {
                        "id": 15513,
                        "name": "_owners",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14902,
                        "src": "10963:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 15515,
                      "indexExpression": {
                        "id": 15514,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15474,
                        "src": "10971:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "10963:16:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15517,
                  "nodeType": "ExpressionStatement",
                  "src": "10956:23:16"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 15519,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15478,
                        "src": "11004:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 15522,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11019:1:16",
                            "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": 15521,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "11011:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 15520,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "11011:7:16",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 15523,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11011:10:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15524,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15474,
                        "src": "11023:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 15518,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16677,
                      "src": "10995:8:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 15525,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10995:36:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15526,
                  "nodeType": "EmitStatement",
                  "src": "10990:41:16"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 15528,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15478,
                        "src": "11062:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 15531,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11077:1:16",
                            "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": 15530,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "11069:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 15529,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "11069:7:16",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 15532,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11069:10:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15533,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15474,
                        "src": "11081:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "31",
                        "id": 15534,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11090:1:16",
                        "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": 15527,
                      "name": "_afterTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15781,
                      "src": "11042:19:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256)"
                      }
                    },
                    "id": 15535,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11042:50:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15536,
                  "nodeType": "ExpressionStatement",
                  "src": "11042:50:16"
                }
              ]
            },
            "documentation": {
              "id": 15472,
              "nodeType": "StructuredDocumentation",
              "src": "10017:315:16",
              "text": " @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."
            },
            "id": 15538,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_burn",
            "nameLocation": "10346:5:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15475,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15474,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "10360:7:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15538,
                  "src": "10352:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15473,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10352:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10351:17:16"
            },
            "returnParameters": {
              "id": 15476,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10386:0:16"
            },
            "scope": 15797,
            "src": "10337:762:16",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 15622,
              "nodeType": "Block",
              "src": "11532:1124:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 15554,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "id": 15551,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15545,
                              "src": "11565:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 15549,
                              "name": "ERC721",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15797,
                              "src": "11550:6:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ERC721_$15797_$",
                                "typeString": "type(contract ERC721)"
                              }
                            },
                            "id": 15550,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "11557:7:16",
                            "memberName": "ownerOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15016,
                            "src": "11550:14:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 15552,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11550:23:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 15553,
                          "name": "from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15541,
                          "src": "11577:4:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "11550:31:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572",
                        "id": 15555,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11583:39:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48",
                          "typeString": "literal_string \"ERC721: transfer from incorrect owner\""
                        },
                        "value": "ERC721: transfer from incorrect owner"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48",
                          "typeString": "literal_string \"ERC721: transfer from incorrect owner\""
                        }
                      ],
                      "id": 15548,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "11542:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 15556,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11542:81:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15557,
                  "nodeType": "ExpressionStatement",
                  "src": "11542:81:16"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 15564,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 15559,
                          "name": "to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15543,
                          "src": "11641:2:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 15562,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11655:1:16",
                              "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": 15561,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "11647:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 15560,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "11647:7:16",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15563,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11647:10:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "11641:16:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373",
                        "id": 15565,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11659:38:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4",
                          "typeString": "literal_string \"ERC721: transfer to the zero address\""
                        },
                        "value": "ERC721: transfer to the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4",
                          "typeString": "literal_string \"ERC721: transfer to the zero address\""
                        }
                      ],
                      "id": 15558,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "11633:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 15566,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11633:65:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15567,
                  "nodeType": "ExpressionStatement",
                  "src": "11633:65:16"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 15569,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15541,
                        "src": "11730:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15570,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15543,
                        "src": "11736:2:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15571,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15545,
                        "src": "11740:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "31",
                        "id": 15572,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11749:1:16",
                        "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": 15568,
                      "name": "_beforeTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15768,
                      "src": "11709:20:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256)"
                      }
                    },
                    "id": 15573,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11709:42:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15574,
                  "nodeType": "ExpressionStatement",
                  "src": "11709:42:16"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 15581,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "id": 15578,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15545,
                              "src": "11866:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 15576,
                              "name": "ERC721",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15797,
                              "src": "11851:6:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ERC721_$15797_$",
                                "typeString": "type(contract ERC721)"
                              }
                            },
                            "id": 15577,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "11858:7:16",
                            "memberName": "ownerOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15016,
                            "src": "11851:14:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 15579,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11851:23:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 15580,
                          "name": "from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15541,
                          "src": "11878:4:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "11851:31:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572",
                        "id": 15582,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11884:39:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48",
                          "typeString": "literal_string \"ERC721: transfer from incorrect owner\""
                        },
                        "value": "ERC721: transfer from incorrect owner"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48",
                          "typeString": "literal_string \"ERC721: transfer from incorrect owner\""
                        }
                      ],
                      "id": 15575,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "11843:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 15583,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11843:81:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15584,
                  "nodeType": "ExpressionStatement",
                  "src": "11843:81:16"
                },
                {
                  "expression": {
                    "id": 15588,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "11986:31:16",
                    "subExpression": {
                      "baseExpression": {
                        "id": 15585,
                        "name": "_tokenApprovals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14910,
                        "src": "11993:15:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 15587,
                      "indexExpression": {
                        "id": 15586,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15545,
                        "src": "12009:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "11993:24:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15589,
                  "nodeType": "ExpressionStatement",
                  "src": "11986:31:16"
                },
                {
                  "id": 15602,
                  "nodeType": "UncheckedBlock",
                  "src": "12028:496:16",
                  "statements": [
                    {
                      "expression": {
                        "id": 15594,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "baseExpression": {
                            "id": 15590,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14906,
                            "src": "12461:9:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 15592,
                          "indexExpression": {
                            "id": 15591,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15541,
                            "src": "12471:4:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "12461:15:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "hexValue": "31",
                          "id": 15593,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12480:1:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "12461:20:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 15595,
                      "nodeType": "ExpressionStatement",
                      "src": "12461:20:16"
                    },
                    {
                      "expression": {
                        "id": 15600,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "baseExpression": {
                            "id": 15596,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14906,
                            "src": "12495:9:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 15598,
                          "indexExpression": {
                            "id": 15597,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15543,
                            "src": "12505:2:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "12495:13:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "hexValue": "31",
                          "id": 15599,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12512:1:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "12495:18:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 15601,
                      "nodeType": "ExpressionStatement",
                      "src": "12495:18:16"
                    }
                  ]
                },
                {
                  "expression": {
                    "id": 15607,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 15603,
                        "name": "_owners",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14902,
                        "src": "12533:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 15605,
                      "indexExpression": {
                        "id": 15604,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15545,
                        "src": "12541:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "12533:16:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 15606,
                      "name": "to",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15543,
                      "src": "12552:2:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "12533:21:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 15608,
                  "nodeType": "ExpressionStatement",
                  "src": "12533:21:16"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 15610,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15541,
                        "src": "12579:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15611,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15543,
                        "src": "12585:2:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15612,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15545,
                        "src": "12589:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 15609,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16677,
                      "src": "12570:8:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 15613,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12570:27:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15614,
                  "nodeType": "EmitStatement",
                  "src": "12565:32:16"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 15616,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15541,
                        "src": "12628:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15617,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15543,
                        "src": "12634:2:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15618,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15545,
                        "src": "12638:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "31",
                        "id": 15619,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12647:1:16",
                        "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": 15615,
                      "name": "_afterTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15781,
                      "src": "12608:19:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256)"
                      }
                    },
                    "id": 15620,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12608:41:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15621,
                  "nodeType": "ExpressionStatement",
                  "src": "12608:41:16"
                }
              ]
            },
            "documentation": {
              "id": 15539,
              "nodeType": "StructuredDocumentation",
              "src": "11105:313:16",
              "text": " @dev Transfers `tokenId` from `from` to `to`.\n  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."
            },
            "id": 15623,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_transfer",
            "nameLocation": "11432:9:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15546,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15541,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "11459:4:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15623,
                  "src": "11451:12:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15540,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11451:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15543,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "11481:2:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15623,
                  "src": "11473:10:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15542,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11473:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15545,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "11501:7:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15623,
                  "src": "11493:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15544,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11493:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11441:73:16"
            },
            "returnParameters": {
              "id": 15547,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11532:0:16"
            },
            "scope": 15797,
            "src": "11423:1233:16",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 15646,
              "nodeType": "Block",
              "src": "12832:107:16",
              "statements": [
                {
                  "expression": {
                    "id": 15635,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 15631,
                        "name": "_tokenApprovals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14910,
                        "src": "12842:15:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 15633,
                      "indexExpression": {
                        "id": 15632,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15628,
                        "src": "12858:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "12842:24:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 15634,
                      "name": "to",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15626,
                      "src": "12869:2:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "12842:29:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 15636,
                  "nodeType": "ExpressionStatement",
                  "src": "12842:29:16"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 15640,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15628,
                            "src": "12910:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 15638,
                            "name": "ERC721",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15797,
                            "src": "12895:6:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ERC721_$15797_$",
                              "typeString": "type(contract ERC721)"
                            }
                          },
                          "id": 15639,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "12902:7:16",
                          "memberName": "ownerOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15016,
                          "src": "12895:14:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                            "typeString": "function (uint256) view returns (address)"
                          }
                        },
                        "id": 15641,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12895:23:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15642,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15626,
                        "src": "12920:2:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15643,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15628,
                        "src": "12924:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 15637,
                      "name": "Approval",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16686,
                      "src": "12886:8:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 15644,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12886:46:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15645,
                  "nodeType": "EmitStatement",
                  "src": "12881:51:16"
                }
              ]
            },
            "documentation": {
              "id": 15624,
              "nodeType": "StructuredDocumentation",
              "src": "12662:101:16",
              "text": " @dev Approve `to` to operate on `tokenId`\n Emits an {Approval} event."
            },
            "id": 15647,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_approve",
            "nameLocation": "12777:8:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15629,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15626,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "12794:2:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15647,
                  "src": "12786:10:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15625,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12786:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15628,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "12806:7:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15647,
                  "src": "12798:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15627,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12798:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12785:29:16"
            },
            "returnParameters": {
              "id": 15630,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12832:0:16"
            },
            "scope": 15797,
            "src": "12768:171:16",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 15678,
              "nodeType": "Block",
              "src": "13198:184:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 15660,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 15658,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15650,
                          "src": "13216:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "id": 15659,
                          "name": "operator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15652,
                          "src": "13225:8:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "13216:17:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572",
                        "id": 15661,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13235:27:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05",
                          "typeString": "literal_string \"ERC721: approve to caller\""
                        },
                        "value": "ERC721: approve to caller"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05",
                          "typeString": "literal_string \"ERC721: approve to caller\""
                        }
                      ],
                      "id": 15657,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "13208:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 15662,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13208:55:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15663,
                  "nodeType": "ExpressionStatement",
                  "src": "13208:55:16"
                },
                {
                  "expression": {
                    "id": 15670,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 15664,
                          "name": "_operatorApprovals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14916,
                          "src": "13273:18:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                            "typeString": "mapping(address => mapping(address => bool))"
                          }
                        },
                        "id": 15667,
                        "indexExpression": {
                          "id": 15665,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15650,
                          "src": "13292:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "13273:25:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 15668,
                      "indexExpression": {
                        "id": 15666,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15652,
                        "src": "13299:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "13273:35:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 15669,
                      "name": "approved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15654,
                      "src": "13311:8:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "13273:46:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 15671,
                  "nodeType": "ExpressionStatement",
                  "src": "13273:46:16"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 15673,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15650,
                        "src": "13349:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15674,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15652,
                        "src": "13356:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 15675,
                        "name": "approved",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15654,
                        "src": "13366:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 15672,
                      "name": "ApprovalForAll",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16695,
                      "src": "13334:14:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                        "typeString": "function (address,address,bool)"
                      }
                    },
                    "id": 15676,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13334:41:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15677,
                  "nodeType": "EmitStatement",
                  "src": "13329:46:16"
                }
              ]
            },
            "documentation": {
              "id": 15648,
              "nodeType": "StructuredDocumentation",
              "src": "12945:125:16",
              "text": " @dev Approve `operator` to operate on all of `owner` tokens\n Emits an {ApprovalForAll} event."
            },
            "id": 15679,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_setApprovalForAll",
            "nameLocation": "13084:18:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15655,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15650,
                  "mutability": "mutable",
                  "name": "owner",
                  "nameLocation": "13120:5:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15679,
                  "src": "13112:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15649,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13112:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15652,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "13143:8:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15679,
                  "src": "13135:16:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15651,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13135:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15654,
                  "mutability": "mutable",
                  "name": "approved",
                  "nameLocation": "13166:8:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15679,
                  "src": "13161:13:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15653,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13161:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13102:78:16"
            },
            "returnParameters": {
              "id": 15656,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13198:0:16"
            },
            "scope": 15797,
            "src": "13075:307:16",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 15692,
              "nodeType": "Block",
              "src": "13529:70:16",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 15687,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15682,
                            "src": "13555:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 15686,
                          "name": "_exists",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15316,
                          "src": "13547:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) view returns (bool)"
                          }
                        },
                        "id": 15688,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13547:16:16",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a20696e76616c696420746f6b656e204944",
                        "id": 15689,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13565:26:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f",
                          "typeString": "literal_string \"ERC721: invalid token ID\""
                        },
                        "value": "ERC721: invalid token ID"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f",
                          "typeString": "literal_string \"ERC721: invalid token ID\""
                        }
                      ],
                      "id": 15685,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "13539:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 15690,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13539:53:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15691,
                  "nodeType": "ExpressionStatement",
                  "src": "13539:53:16"
                }
              ]
            },
            "documentation": {
              "id": 15680,
              "nodeType": "StructuredDocumentation",
              "src": "13388:73:16",
              "text": " @dev Reverts if the `tokenId` has not been minted yet."
            },
            "id": 15693,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_requireMinted",
            "nameLocation": "13475:14:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15683,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15682,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "13498:7:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15693,
                  "src": "13490:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15681,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13490:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13489:17:16"
            },
            "returnParameters": {
              "id": 15684,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13529:0:16"
            },
            "scope": 15797,
            "src": "13466:133:16",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 15754,
              "nodeType": "Block",
              "src": "14306:676:16",
              "statements": [
                {
                  "condition": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 15707,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15698,
                        "src": "14320:2:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 15708,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "14323:10:16",
                      "memberName": "isContract",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17364,
                      "src": "14320:13:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$attached_to$_t_address_$",
                        "typeString": "function (address) view returns (bool)"
                      }
                    },
                    "id": 15709,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14320:15:16",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 15752,
                    "nodeType": "Block",
                    "src": "14940:36:16",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 15750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "14961:4:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 15706,
                        "id": 15751,
                        "nodeType": "Return",
                        "src": "14954:11:16"
                      }
                    ]
                  },
                  "id": 15753,
                  "nodeType": "IfStatement",
                  "src": "14316:660:16",
                  "trueBody": {
                    "id": 15749,
                    "nodeType": "Block",
                    "src": "14337:597:16",
                    "statements": [
                      {
                        "clauses": [
                          {
                            "block": {
                              "id": 15729,
                              "nodeType": "Block",
                              "src": "14451:91:16",
                              "statements": [
                                {
                                  "expression": {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    },
                                    "id": 15727,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 15723,
                                      "name": "retval",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15721,
                                      "src": "14476:6:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "expression": {
                                        "expression": {
                                          "id": 15724,
                                          "name": "IERC721Receiver",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17319,
                                          "src": "14486:15:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$17319_$",
                                            "typeString": "type(contract IERC721Receiver)"
                                          }
                                        },
                                        "id": 15725,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberLocation": "14502:16:16",
                                        "memberName": "onERC721Received",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17318,
                                        "src": "14486:32:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                                          "typeString": "function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"
                                        }
                                      },
                                      "id": 15726,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberLocation": "14519:8:16",
                                      "memberName": "selector",
                                      "nodeType": "MemberAccess",
                                      "src": "14486:41:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "src": "14476:51:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "functionReturnParameters": 15706,
                                  "id": 15728,
                                  "nodeType": "Return",
                                  "src": "14469:58:16"
                                }
                              ]
                            },
                            "errorName": "",
                            "id": 15730,
                            "nodeType": "TryCatchClause",
                            "parameters": {
                              "id": 15722,
                              "nodeType": "ParameterList",
                              "parameters": [
                                {
                                  "constant": false,
                                  "id": 15721,
                                  "mutability": "mutable",
                                  "name": "retval",
                                  "nameLocation": "14443:6:16",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 15730,
                                  "src": "14436:13:16",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "typeName": {
                                    "id": 15720,
                                    "name": "bytes4",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14436:6:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "src": "14435:15:16"
                            },
                            "src": "14427:115:16"
                          },
                          {
                            "block": {
                              "id": 15746,
                              "nodeType": "Block",
                              "src": "14571:353:16",
                              "statements": [
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 15737,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 15734,
                                        "name": "reason",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15732,
                                        "src": "14593:6:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 15735,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "14600:6:16",
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "14593:13:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 15736,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14610:1:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "14593:18:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": {
                                    "id": 15744,
                                    "nodeType": "Block",
                                    "src": "14720:190:16",
                                    "statements": [
                                      {
                                        "AST": {
                                          "nodeType": "YulBlock",
                                          "src": "14806:86:16",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "14843:2:16",
                                                        "type": "",
                                                        "value": "32"
                                                      },
                                                      {
                                                        "name": "reason",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "14847:6:16"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "14839:3:16"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "14839:15:16"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "reason",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "14862:6:16"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "14856:5:16"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "14856:13:16"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "revert",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "14832:6:16"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "14832:38:16"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "14832:38:16"
                                            }
                                          ]
                                        },
                                        "documentation": "@solidity memory-safe-assembly",
                                        "evmVersion": "istanbul",
                                        "externalReferences": [
                                          {
                                            "declaration": 15732,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "14847:6:16",
                                            "valueSize": 1
                                          },
                                          {
                                            "declaration": 15732,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "14862:6:16",
                                            "valueSize": 1
                                          }
                                        ],
                                        "id": 15743,
                                        "nodeType": "InlineAssembly",
                                        "src": "14797:95:16"
                                      }
                                    ]
                                  },
                                  "id": 15745,
                                  "nodeType": "IfStatement",
                                  "src": "14589:321:16",
                                  "trueBody": {
                                    "id": 15742,
                                    "nodeType": "Block",
                                    "src": "14613:101:16",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572",
                                              "id": 15739,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "14642:52:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                                                "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                                              },
                                              "value": "ERC721: transfer to non ERC721Receiver implementer"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                                                "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                                              }
                                            ],
                                            "id": 15738,
                                            "name": "revert",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                              -19,
                                              -19
                                            ],
                                            "referencedDeclaration": -19,
                                            "src": "14635:6:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                              "typeString": "function (string memory) pure"
                                            }
                                          },
                                          "id": 15740,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "14635:60:16",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 15741,
                                        "nodeType": "ExpressionStatement",
                                        "src": "14635:60:16"
                                      }
                                    ]
                                  }
                                }
                              ]
                            },
                            "errorName": "",
                            "id": 15747,
                            "nodeType": "TryCatchClause",
                            "parameters": {
                              "id": 15733,
                              "nodeType": "ParameterList",
                              "parameters": [
                                {
                                  "constant": false,
                                  "id": 15732,
                                  "mutability": "mutable",
                                  "name": "reason",
                                  "nameLocation": "14563:6:16",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 15747,
                                  "src": "14550:19:16",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes"
                                  },
                                  "typeName": {
                                    "id": 15731,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14550:5:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "src": "14549:21:16"
                            },
                            "src": "14543:381:16"
                          }
                        ],
                        "externalCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 15714,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16868,
                                "src": "14392:10:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 15715,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14392:12:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 15716,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15696,
                              "src": "14406:4:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 15717,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15700,
                              "src": "14412:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 15718,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15702,
                              "src": "14421:4:16",
                              "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": {
                              "arguments": [
                                {
                                  "id": 15711,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15698,
                                  "src": "14371:2:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 15710,
                                "name": "IERC721Receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17319,
                                "src": "14355:15:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$17319_$",
                                  "typeString": "type(contract IERC721Receiver)"
                                }
                              },
                              "id": 15712,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14355:19:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC721Receiver_$17319",
                                "typeString": "contract IERC721Receiver"
                              }
                            },
                            "id": 15713,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "14375:16:16",
                            "memberName": "onERC721Received",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17318,
                            "src": "14355:36:16",
                            "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": 15719,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14355:71:16",
                          "tryCall": true,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 15748,
                        "nodeType": "TryStatement",
                        "src": "14351:573:16"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 15694,
              "nodeType": "StructuredDocumentation",
              "src": "13605:541:16",
              "text": " @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call\n @return bool whether the call correctly returned the expected magic value"
            },
            "id": 15755,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_checkOnERC721Received",
            "nameLocation": "14160:22:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15703,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15696,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "14200:4:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15755,
                  "src": "14192:12:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15695,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14192:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15698,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "14222:2:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15755,
                  "src": "14214:10:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15697,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14214:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15700,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "14242:7:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15755,
                  "src": "14234:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15699,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14234:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15702,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "14272:4:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15755,
                  "src": "14259:17:16",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 15701,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "14259:5:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14182:100:16"
            },
            "returnParameters": {
              "id": 15706,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15705,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15755,
                  "src": "14300:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15704,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14300:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14299:6:16"
            },
            "scope": 15797,
            "src": "14151:831:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 15767,
              "nodeType": "Block",
              "src": "15850:2:16",
              "statements": []
            },
            "documentation": {
              "id": 15756,
              "nodeType": "StructuredDocumentation",
              "src": "14988:705:16",
              "text": " @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is\n used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.\n - When `from` is zero, the tokens will be minted for `to`.\n - When `to` is zero, ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n - `batchSize` is non-zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
            },
            "id": 15768,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_beforeTokenTransfer",
            "nameLocation": "15707:20:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15765,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15758,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "15745:4:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15768,
                  "src": "15737:12:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15757,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15737:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15760,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "15767:2:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15768,
                  "src": "15759:10:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15759,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15759:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15762,
                  "mutability": "mutable",
                  "name": "firstTokenId",
                  "nameLocation": "15787:12:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15768,
                  "src": "15779:20:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15761,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15779:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15764,
                  "mutability": "mutable",
                  "name": "batchSize",
                  "nameLocation": "15817:9:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15768,
                  "src": "15809:17:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15763,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15809:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15727:105:16"
            },
            "returnParameters": {
              "id": 15766,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15850:0:16"
            },
            "scope": 15797,
            "src": "15698:154:16",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 15780,
              "nodeType": "Block",
              "src": "16709:2:16",
              "statements": []
            },
            "documentation": {
              "id": 15769,
              "nodeType": "StructuredDocumentation",
              "src": "15858:695:16",
              "text": " @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is\n used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.\n - When `from` is zero, the tokens were minted for `to`.\n - When `to` is zero, ``from``'s tokens were burned.\n - `from` and `to` are never both zero.\n - `batchSize` is non-zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
            },
            "id": 15781,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_afterTokenTransfer",
            "nameLocation": "16567:19:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15778,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15771,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "16604:4:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15781,
                  "src": "16596:12:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15770,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16596:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15773,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "16626:2:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15781,
                  "src": "16618:10:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15772,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16618:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15775,
                  "mutability": "mutable",
                  "name": "firstTokenId",
                  "nameLocation": "16646:12:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15781,
                  "src": "16638:20:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15774,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "16638:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15777,
                  "mutability": "mutable",
                  "name": "batchSize",
                  "nameLocation": "16676:9:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15781,
                  "src": "16668:17:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15776,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "16668:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16586:105:16"
            },
            "returnParameters": {
              "id": 15779,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16709:0:16"
            },
            "scope": 15797,
            "src": "16558:153:16",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 15795,
              "nodeType": "Block",
              "src": "17260:45:16",
              "statements": [
                {
                  "expression": {
                    "id": 15793,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 15789,
                        "name": "_balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14906,
                        "src": "17270:9:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 15791,
                      "indexExpression": {
                        "id": 15790,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15784,
                        "src": "17280:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "17270:18:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "id": 15792,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15786,
                      "src": "17292:6:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "17270:28:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15794,
                  "nodeType": "ExpressionStatement",
                  "src": "17270:28:16"
                }
              ]
            },
            "documentation": {
              "id": 15782,
              "nodeType": "StructuredDocumentation",
              "src": "16717:409:16",
              "text": " @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n WARNING: Anyone calling this MUST ensure that the balances remain consistent with the ownership. The invariant\n being that for any address `a` the value returned by `balanceOf(a)` must be equal to the number of tokens such\n that `ownerOf(tokenId)` is `a`."
            },
            "id": 15796,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "__unsafe_increaseBalance",
            "nameLocation": "17193:24:16",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15787,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15784,
                  "mutability": "mutable",
                  "name": "account",
                  "nameLocation": "17226:7:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15796,
                  "src": "17218:15:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15783,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17218:7:16",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15786,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "17243:6:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 15796,
                  "src": "17235:14:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15785,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "17235:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17217:33:16"
            },
            "returnParameters": {
              "id": 15788,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17260:0:16"
            },
            "scope": 15797,
            "src": "17184:121:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 15798,
        "src": "628:16679:16",
        "usedErrors": []
      }
    ],
    "src": "107:17201:16"
  },
  "bytecode": "60806040523480156200001157600080fd5b50604051620013e7380380620013e783398101604081905262000034916200011f565b600062000042838262000218565b50600162000051828262000218565b505050620002e4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008257600080fd5b81516001600160401b03808211156200009f576200009f6200005a565b604051601f8301601f19908116603f01168101908282118183101715620000ca57620000ca6200005a565b81604052838152602092508683858801011115620000e757600080fd5b600091505b838210156200010b5785820183015181830184015290820190620000ec565b600093810190920192909252949350505050565b600080604083850312156200013357600080fd5b82516001600160401b03808211156200014b57600080fd5b620001598683870162000070565b935060208501519150808211156200017057600080fd5b506200017f8582860162000070565b9150509250929050565b600181811c908216806200019e57607f821691505b602082108103620001bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021357600081815260208120601f850160051c81016020861015620001ee5750805b601f850160051c820191505b818110156200020f57828155600101620001fa565b5050505b505050565b81516001600160401b038111156200023457620002346200005a565b6200024c8162000245845462000189565b84620001c5565b602080601f8311600181146200028457600084156200026b5750858301515b600019600386901b1c1916600185901b1785556200020f565b600085815260208120601f198616915b82811015620002b55788860151825594840194600190910190840162000294565b5085821015620002d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6110f380620002f46000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c7f565b610228565b60405190151581526020015b60405180910390f35b61010461027a565b6040516100f39190610cec565b61012461011f366004610cff565b61030c565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610d34565b610333565b005b61014f61015f366004610d5e565b61044d565b61014f610172366004610d5e565b61047e565b610124610185366004610cff565b610499565b61019d610198366004610d9a565b6104f9565b6040519081526020016100f3565b61010461057f565b61014f6101c1366004610db5565b61058e565b61014f6101d4366004610e07565b61059d565b6101046101e7366004610cff565b6105d5565b6100e76101fa366004610ee3565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461028990610f16565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590610f16565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b600061031782610649565b506000908152600460205260409020546001600160a01b031690565b600061033e82610499565b9050806001600160a01b0316836001600160a01b0316036103b05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103cc57506103cc81336101fa565b61043e5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103a7565b61044883836106ab565b505050565b6104573382610719565b6104735760405162461bcd60e51b81526004016103a790610f50565b610448838383610798565b6104488383836040518060200160405280600081525061059d565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a7565b60006001600160a01b0382166105635760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103a7565b506001600160a01b031660009081526003602052604090205490565b60606001805461028990610f16565b6105993383836108fc565b5050565b6105a73383610719565b6105c35760405162461bcd60e51b81526004016103a790610f50565b6105cf848484846109ca565b50505050565b60606105e082610649565b60006105f760408051602081019091526000815290565b905060008151116106175760405180602001604052806000815250610642565b80610621846109fd565b604051602001610632929190610f9d565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166106a85760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a7565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e082610499565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061072583610499565b9050806001600160a01b0316846001600160a01b0316148061076c57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806107905750836001600160a01b03166107858461030c565b6001600160a01b0316145b949350505050565b826001600160a01b03166107ab82610499565b6001600160a01b0316146107d15760405162461bcd60e51b81526004016103a790610fcc565b6001600160a01b0382166108335760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103a7565b826001600160a01b031661084682610499565b6001600160a01b03161461086c5760405162461bcd60e51b81526004016103a790610fcc565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03160361095d5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103a7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6109d5848484610798565b6109e184848484610a90565b6105cf5760405162461bcd60e51b81526004016103a790611011565b60606000610a0a83610b91565b600101905060008167ffffffffffffffff811115610a2a57610a2a610df1565b6040519080825280601f01601f191660200182016040528015610a54576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a5e57509392505050565b60006001600160a01b0384163b15610b8657604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610ad4903390899088908890600401611063565b6020604051808303816000875af1925050508015610b0f575060408051601f3d908101601f19168201909252610b0c918101906110a0565b60015b610b6c573d808015610b3d576040519150601f19603f3d011682016040523d82523d6000602084013e610b42565b606091505b508051600003610b645760405162461bcd60e51b81526004016103a790611011565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610790565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610bd05772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610bfc576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610c1a57662386f26fc10000830492506010015b6305f5e1008310610c32576305f5e100830492506008015b6127108310610c4657612710830492506004015b60648310610c58576064830492506002015b600a83106102745760010192915050565b6001600160e01b0319811681146106a857600080fd5b600060208284031215610c9157600080fd5b813561064281610c69565b60005b83811015610cb7578181015183820152602001610c9f565b50506000910152565b60008151808452610cd8816020860160208601610c9c565b601f01601f19169290920160200192915050565b6020815260006106426020830184610cc0565b600060208284031215610d1157600080fd5b5035919050565b80356001600160a01b0381168114610d2f57600080fd5b919050565b60008060408385031215610d4757600080fd5b610d5083610d18565b946020939093013593505050565b600080600060608486031215610d7357600080fd5b610d7c84610d18565b9250610d8a60208501610d18565b9150604084013590509250925092565b600060208284031215610dac57600080fd5b61064282610d18565b60008060408385031215610dc857600080fd5b610dd183610d18565b915060208301358015158114610de657600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610e1d57600080fd5b610e2685610d18565b9350610e3460208601610d18565b925060408501359150606085013567ffffffffffffffff80821115610e5857600080fd5b818701915087601f830112610e6c57600080fd5b813581811115610e7e57610e7e610df1565b604051601f8201601f19908116603f01168101908382118183101715610ea657610ea6610df1565b816040528281528a6020848701011115610ebf57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ef657600080fd5b610eff83610d18565b9150610f0d60208401610d18565b90509250929050565b600181811c90821680610f2a57607f821691505b602082108103610f4a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60008351610faf818460208801610c9c565b835190830190610fc3818360208801610c9c565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061109690830184610cc0565b9695505050505050565b6000602082840312156110b257600080fd5b815161064281610c6956fea2646970667358221220181b12202020c1e80d452c81d5cac07839333868f3a853bcab12a96cce1b8f2b64736f6c63430008130033",
  "bytecodeSha1": "3abddb3b491188aca78ae8d60c90de8bd60a2c93",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.8.19+commit.7dd6d404"
  },
  "contractName": "ERC721",
  "coverageMap": {
    "branches": {
      "16": {
        "ERC721._checkOnERC721Received": {
          "74": [
            14593,
            14611,
            false
          ]
        },
        "ERC721._safeTransfer": {
          "73": [
            6620,
            6667,
            true
          ]
        },
        "ERC721._setApprovalForAll": {
          "72": [
            13216,
            13233,
            true
          ]
        },
        "ERC721._transfer": {
          "69": [
            11550,
            11581,
            true
          ],
          "70": [
            11641,
            11657,
            true
          ],
          "71": [
            11851,
            11882,
            true
          ]
        },
        "ERC721.approve": {
          "62": [
            3605,
            3616,
            true
          ],
          "63": [
            3686,
            3707,
            true
          ],
          "64": [
            3711,
            3748,
            true
          ]
        },
        "ERC721.balanceOf": {
          "66": [
            2028,
            2047,
            true
          ]
        },
        "ERC721.safeTransferFrom": {
          "67": [
            5417,
            5458,
            true
          ]
        },
        "ERC721.tokenURI": {
          "68": [
            2984,
            3009,
            true
          ]
        },
        "ERC721.transferFrom": {
          "65": [
            4801,
            4842,
            true
          ]
        }
      },
      "17": {},
      "18": {},
      "21": {},
      "22": {},
      "23": {},
      "25": {},
      "28": {},
      "29": {},
      "30": {
        "Math.log10": {
          "75": [
            10017,
            10032,
            false
          ],
          "76": [
            10129,
            10144,
            false
          ],
          "77": [
            10241,
            10256,
            false
          ],
          "78": [
            10353,
            10367,
            false
          ],
          "79": [
            10462,
            10476,
            false
          ],
          "80": [
            10571,
            10585,
            false
          ],
          "81": [
            10680,
            10694,
            false
          ]
        }
      }
    },
    "statements": {
      "16": {
        "ERC721._approve": {
          "25": [
            12842,
            12871
          ],
          "26": [
            12881,
            12932
          ]
        },
        "ERC721._baseURI": {
          "22": [
            3395,
            3404
          ]
        },
        "ERC721._checkOnERC721Received": {
          "45": [
            14635,
            14695
          ],
          "46": [
            14469,
            14527
          ],
          "47": [
            14954,
            14965
          ]
        },
        "ERC721._isApprovedOrOwner": {
          "27": [
            7698,
            7794
          ]
        },
        "ERC721._ownerOf": {
          "13": [
            6923,
            6946
          ]
        },
        "ERC721._requireMinted": {
          "24": [
            13539,
            13592
          ]
        },
        "ERC721._safeTransfer": {
          "39": [
            6574,
            6602
          ],
          "40": [
            6612,
            6722
          ]
        },
        "ERC721._setApprovalForAll": {
          "36": [
            13208,
            13263
          ],
          "37": [
            13273,
            13319
          ],
          "38": [
            13329,
            13375
          ]
        },
        "ERC721._transfer": {
          "28": [
            11542,
            11623
          ],
          "29": [
            11633,
            11698
          ],
          "30": [
            11843,
            11924
          ],
          "31": [
            11986,
            12017
          ],
          "32": [
            12461,
            12481
          ],
          "33": [
            12495,
            12513
          ],
          "34": [
            12533,
            12554
          ],
          "35": [
            12565,
            12597
          ]
        },
        "ERC721.approve": {
          "6": [
            3597,
            3654
          ],
          "8": [
            3665,
            3835
          ],
          "9": [
            3846,
            3867
          ]
        },
        "ERC721.balanceOf": {
          "15": [
            2020,
            2093
          ],
          "16": [
            2103,
            2126
          ]
        },
        "ERC721.getApproved": {
          "4": [
            4030,
            4053
          ],
          "5": [
            4064,
            4095
          ]
        },
        "ERC721.isApprovedForAll": {
          "0": [
            4501,
            4543
          ]
        },
        "ERC721.name": {
          "3": [
            2550,
            2562
          ]
        },
        "ERC721.ownerOf": {
          "14": [
            2324,
            2380
          ]
        },
        "ERC721.safeTransferFrom": {
          "12": [
            5137,
            5176
          ],
          "19": [
            5409,
            5508
          ],
          "20": [
            5518,
            5556
          ]
        },
        "ERC721.setApprovalForAll": {
          "18": [
            4263,
            4315
          ]
        },
        "ERC721.supportsInterface": {
          "1": [
            1688,
            1863
          ]
        },
        "ERC721.symbol": {
          "17": [
            2714,
            2728
          ]
        },
        "ERC721.tokenURI": {
          "21": [
            2899,
            2922
          ],
          "23": [
            2977,
            3070
          ]
        },
        "ERC721.transferFrom": {
          "10": [
            4793,
            4892
          ],
          "11": [
            4903,
            4931
          ]
        }
      },
      "17": {},
      "18": {},
      "21": {},
      "22": {
        "Address.isContract": {
          "44": [
            1458,
            1488
          ]
        }
      },
      "23": {
        "Context._msgSender": {
          "7": [
            712,
            729
          ]
        }
      },
      "25": {
        "Strings.toString": {
          "41": [
            819,
            824
          ],
          "42": [
            1003,
            1014
          ],
          "43": [
            1081,
            1094
          ]
        }
      },
      "28": {
        "ERC165.supportsInterface": {
          "2": [
            930,
            977
          ]
        }
      },
      "29": {},
      "30": {
        "Math.log10": {
          "48": [
            10052,
            10067
          ],
          "49": [
            10085,
            10097
          ],
          "50": [
            10164,
            10179
          ],
          "51": [
            10197,
            10209
          ],
          "52": [
            10276,
            10291
          ],
          "53": [
            10309,
            10321
          ],
          "54": [
            10387,
            10401
          ],
          "55": [
            10419,
            10430
          ],
          "56": [
            10496,
            10510
          ],
          "57": [
            10528,
            10539
          ],
          "58": [
            10605,
            10619
          ],
          "59": [
            10637,
            10648
          ],
          "60": [
            10714,
            10725
          ],
          "61": [
            10759,
            10772
          ]
        }
      }
    }
  },
  "dependencies": [
    "OpenZeppelin/openzeppelin-contracts@4.8.2/Address",
    "OpenZeppelin/openzeppelin-contracts@4.8.2/Context",
    "OpenZeppelin/openzeppelin-contracts@4.8.2/ERC165",
    "OpenZeppelin/openzeppelin-contracts@4.8.2/IERC165",
    "OpenZeppelin/openzeppelin-contracts@4.8.2/IERC721",
    "OpenZeppelin/openzeppelin-contracts@4.8.2/IERC721Metadata",
    "OpenZeppelin/openzeppelin-contracts@4.8.2/IERC721Receiver",
    "OpenZeppelin/openzeppelin-contracts@4.8.2/Math",
    "OpenZeppelin/openzeppelin-contracts@4.8.2/Strings"
  ],
  "deployedBytecode": "608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c7f565b610228565b60405190151581526020015b60405180910390f35b61010461027a565b6040516100f39190610cec565b61012461011f366004610cff565b61030c565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610d34565b610333565b005b61014f61015f366004610d5e565b61044d565b61014f610172366004610d5e565b61047e565b610124610185366004610cff565b610499565b61019d610198366004610d9a565b6104f9565b6040519081526020016100f3565b61010461057f565b61014f6101c1366004610db5565b61058e565b61014f6101d4366004610e07565b61059d565b6101046101e7366004610cff565b6105d5565b6100e76101fa366004610ee3565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461028990610f16565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590610f16565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b600061031782610649565b506000908152600460205260409020546001600160a01b031690565b600061033e82610499565b9050806001600160a01b0316836001600160a01b0316036103b05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103cc57506103cc81336101fa565b61043e5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103a7565b61044883836106ab565b505050565b6104573382610719565b6104735760405162461bcd60e51b81526004016103a790610f50565b610448838383610798565b6104488383836040518060200160405280600081525061059d565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a7565b60006001600160a01b0382166105635760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103a7565b506001600160a01b031660009081526003602052604090205490565b60606001805461028990610f16565b6105993383836108fc565b5050565b6105a73383610719565b6105c35760405162461bcd60e51b81526004016103a790610f50565b6105cf848484846109ca565b50505050565b60606105e082610649565b60006105f760408051602081019091526000815290565b905060008151116106175760405180602001604052806000815250610642565b80610621846109fd565b604051602001610632929190610f9d565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166106a85760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a7565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e082610499565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061072583610499565b9050806001600160a01b0316846001600160a01b0316148061076c57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806107905750836001600160a01b03166107858461030c565b6001600160a01b0316145b949350505050565b826001600160a01b03166107ab82610499565b6001600160a01b0316146107d15760405162461bcd60e51b81526004016103a790610fcc565b6001600160a01b0382166108335760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103a7565b826001600160a01b031661084682610499565b6001600160a01b03161461086c5760405162461bcd60e51b81526004016103a790610fcc565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03160361095d5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103a7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6109d5848484610798565b6109e184848484610a90565b6105cf5760405162461bcd60e51b81526004016103a790611011565b60606000610a0a83610b91565b600101905060008167ffffffffffffffff811115610a2a57610a2a610df1565b6040519080825280601f01601f191660200182016040528015610a54576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a5e57509392505050565b60006001600160a01b0384163b15610b8657604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610ad4903390899088908890600401611063565b6020604051808303816000875af1925050508015610b0f575060408051601f3d908101601f19168201909252610b0c918101906110a0565b60015b610b6c573d808015610b3d576040519150601f19603f3d011682016040523d82523d6000602084013e610b42565b606091505b508051600003610b645760405162461bcd60e51b81526004016103a790611011565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610790565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610bd05772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610bfc576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610c1a57662386f26fc10000830492506010015b6305f5e1008310610c32576305f5e100830492506008015b6127108310610c4657612710830492506004015b60648310610c58576064830492506002015b600a83106102745760010192915050565b6001600160e01b0319811681146106a857600080fd5b600060208284031215610c9157600080fd5b813561064281610c69565b60005b83811015610cb7578181015183820152602001610c9f565b50506000910152565b60008151808452610cd8816020860160208601610c9c565b601f01601f19169290920160200192915050565b6020815260006106426020830184610cc0565b600060208284031215610d1157600080fd5b5035919050565b80356001600160a01b0381168114610d2f57600080fd5b919050565b60008060408385031215610d4757600080fd5b610d5083610d18565b946020939093013593505050565b600080600060608486031215610d7357600080fd5b610d7c84610d18565b9250610d8a60208501610d18565b9150604084013590509250925092565b600060208284031215610dac57600080fd5b61064282610d18565b60008060408385031215610dc857600080fd5b610dd183610d18565b915060208301358015158114610de657600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610e1d57600080fd5b610e2685610d18565b9350610e3460208601610d18565b925060408501359150606085013567ffffffffffffffff80821115610e5857600080fd5b818701915087601f830112610e6c57600080fd5b813581811115610e7e57610e7e610df1565b604051601f8201601f19908116603f01168101908382118183101715610ea657610ea6610df1565b816040528281528a6020848701011115610ebf57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ef657600080fd5b610eff83610d18565b9150610f0d60208401610d18565b90509250929050565b600181811c90821680610f2a57607f821691505b602082108103610f4a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60008351610faf818460208801610c9c565b835190830190610fc3818360208801610c9c565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061109690830184610cc0565b9695505050505050565b6000602082840312156110b257600080fd5b815161064281610c6956fea2646970667358221220181b12202020c1e80d452c81d5cac07839333868f3a853bcab12a96cce1b8f2b64736f6c63430008130033",
  "deployedSourceMap": "628:16679:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:300;;;;;;:::i;:::-;;:::i;:::-;;;565:14:67;;558:22;540:41;;528:2;513:18;1570:300:16;;;;;;;;2471:98;;;:::i;:::-;;;;;;;:::i;3935:167::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:67;;;1679:51;;1667:2;1652:18;3935:167:16;1533:203:67;3468:406:16;;;;;;:::i;:::-;;:::i;:::-;;4612:326;;;;;;:::i;:::-;;:::i;5004:179::-;;;;;;:::i;:::-;;:::i;2190:219::-;;;;;;:::i;:::-;;:::i;1929:204::-;;;;;;:::i;:::-;;:::i;:::-;;;2848:25:67;;;2836:2;2821:18;1929:204:16;2702:177:67;2633:102:16;;;:::i;4169:153::-;;;;;;:::i;:::-;;:::i;5249:314::-;;;;;;:::i;:::-;;:::i;2801:276::-;;;;;;:::i;:::-;;:::i;4388:162::-;;;;;;:::i;:::-;-1:-1:-1;;;;;4508:25:16;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4388:162;1570:300;1672:4;-1:-1:-1;;;;;;1707:40:16;;-1:-1:-1;;;1707:40:16;;:104;;-1:-1:-1;;;;;;;1763:48:16;;-1:-1:-1;;;1763:48:16;1707:104;:156;;;-1:-1:-1;;;;;;;;;;937:40:28;;;1827:36:16;1688:175;1570:300;-1:-1:-1;;1570:300:16:o;2471:98::-;2525:13;2557:5;2550:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:98;:::o;3935:167::-;4011:7;4030:23;4045:7;4030:14;:23::i;:::-;-1:-1:-1;4071:24:16;;;;:15;:24;;;;;;-1:-1:-1;;;;;4071:24:16;;3935:167::o;3468:406::-;3548:13;3564:23;3579:7;3564:14;:23::i;:::-;3548:39;;3611:5;-1:-1:-1;;;;;3605:11:16;:2;-1:-1:-1;;;;;3605:11:16;;3597:57;;;;-1:-1:-1;;;3597:57:16;;5363:2:67;3597:57:16;;;5345:21:67;5402:2;5382:18;;;5375:30;5441:34;5421:18;;;5414:62;-1:-1:-1;;;5492:18:67;;;5485:31;5533:19;;3597:57:16;;;;;;;;;719:10:23;-1:-1:-1;;;;;3686:21:16;;;;:62;;-1:-1:-1;3711:37:16;3728:5;719:10:23;4388:162:16;:::i;3711:37::-;3665:170;;;;-1:-1:-1;;;3665:170:16;;5765:2:67;3665:170:16;;;5747:21:67;5804:2;5784:18;;;5777:30;5843:34;5823:18;;;5816:62;5914:31;5894:18;;;5887:59;5963:19;;3665:170:16;5563:425:67;3665:170:16;3846:21;3855:2;3859:7;3846:8;:21::i;:::-;3538:336;3468:406;;:::o;4612:326::-;4801:41;719:10:23;4834:7:16;4801:18;:41::i;:::-;4793:99;;;;-1:-1:-1;;;4793:99:16;;;;;;;:::i;:::-;4903:28;4913:4;4919:2;4923:7;4903:9;:28::i;5004:179::-;5137:39;5154:4;5160:2;5164:7;5137:39;;;;;;;;;;;;:16;:39::i;2190:219::-;2262:7;6930:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6930:16:16;;2324:56;;;;-1:-1:-1;;;2324:56:16;;6609:2:67;2324:56:16;;;6591:21:67;6648:2;6628:18;;;6621:30;-1:-1:-1;;;6667:18:67;;;6660:54;6731:18;;2324:56:16;6407:348:67;1929:204:16;2001:7;-1:-1:-1;;;;;2028:19:16;;2020:73;;;;-1:-1:-1;;;2020:73:16;;6962:2:67;2020:73:16;;;6944:21:67;7001:2;6981:18;;;6974:30;7040:34;7020:18;;;7013:62;-1:-1:-1;;;7091:18:67;;;7084:39;7140:19;;2020:73:16;6760:405:67;2020:73:16;-1:-1:-1;;;;;;2110:16:16;;;;;:9;:16;;;;;;;1929:204::o;2633:102::-;2689:13;2721:7;2714:14;;;;;:::i;4169:153::-;4263:52;719:10:23;4296:8:16;4306;4263:18;:52::i;:::-;4169:153;;:::o;5249:314::-;5417:41;719:10:23;5450:7:16;5417:18;:41::i;:::-;5409:99;;;;-1:-1:-1;;;5409:99:16;;;;;;;:::i;:::-;5518:38;5532:4;5538:2;5542:7;5551:4;5518:13;:38::i;:::-;5249:314;;;;:::o;2801:276::-;2874:13;2899:23;2914:7;2899:14;:23::i;:::-;2933:21;2957:10;3395:9;;;;;;;;;-1:-1:-1;3395:9:16;;;3319:92;2957:10;2933:34;;3008:1;2990:7;2984:21;:25;:86;;;;;;;;;;;;;;;;;3036:7;3045:18;:7;:16;:18::i;:::-;3019:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2984:86;2977:93;2801:276;-1:-1:-1;;;2801:276:16:o;13466:133::-;7321:4;6930:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6930:16:16;13539:53;;;;-1:-1:-1;;;13539:53:16;;6609:2:67;13539:53:16;;;6591:21:67;6648:2;6628:18;;;6621:30;-1:-1:-1;;;6667:18:67;;;6660:54;6731:18;;13539:53:16;6407:348:67;13539:53:16;13466:133;:::o;12768:171::-;12842:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;12842:29:16;-1:-1:-1;;;;;12842:29:16;;;;;;;;:24;;12895:23;12842:24;12895:14;:23::i;:::-;-1:-1:-1;;;;;12886:46:16;;;;;;;;;;;12768:171;;:::o;7540:261::-;7633:4;7649:13;7665:23;7680:7;7665:14;:23::i;:::-;7649:39;;7717:5;-1:-1:-1;;;;;7706:16:16;:7;-1:-1:-1;;;;;7706:16:16;;:52;;;-1:-1:-1;;;;;;4508:25:16;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7726:32;7706:87;;;;7786:7;-1:-1:-1;;;;;7762:31:16;:20;7774:7;7762:11;:20::i;:::-;-1:-1:-1;;;;;7762:31:16;;7706:87;7698:96;7540:261;-1:-1:-1;;;;7540:261:16:o;11423:1233::-;11577:4;-1:-1:-1;;;;;11550:31:16;:23;11565:7;11550:14;:23::i;:::-;-1:-1:-1;;;;;11550:31:16;;11542:81;;;;-1:-1:-1;;;11542:81:16;;;;;;;:::i;:::-;-1:-1:-1;;;;;11641:16:16;;11633:65;;;;-1:-1:-1;;;11633:65:16;;8279:2:67;11633:65:16;;;8261:21:67;8318:2;8298:18;;;8291:30;8357:34;8337:18;;;8330:62;-1:-1:-1;;;8408:18:67;;;8401:34;8452:19;;11633:65:16;8077:400:67;11633:65:16;11878:4;-1:-1:-1;;;;;11851:31:16;:23;11866:7;11851:14;:23::i;:::-;-1:-1:-1;;;;;11851:31:16;;11843:81;;;;-1:-1:-1;;;11843:81:16;;;;;;;:::i;:::-;11993:24;;;;:15;:24;;;;;;;;11986:31;;-1:-1:-1;;;;;;11986:31:16;;;;;;-1:-1:-1;;;;;12461:15:16;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;12461:20:16;;;12495:13;;;;;;;;;:18;;11986:31;12495:18;;;12533:16;;;:7;:16;;;;;;:21;;;;;;;;;;12570:27;;12009:7;;12570:27;;;3538:336;3468:406;;:::o;13075:307::-;13225:8;-1:-1:-1;;;;;13216:17:16;:5;-1:-1:-1;;;;;13216:17:16;;13208:55;;;;-1:-1:-1;;;13208:55:16;;8684:2:67;13208:55:16;;;8666:21:67;8723:2;8703:18;;;8696:30;8762:27;8742:18;;;8735:55;8807:18;;13208:55:16;8482:349:67;13208:55:16;-1:-1:-1;;;;;13273:25:16;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;13273:46:16;;;;;;;;;;13334:41;;540::67;;;13334::16;;513:18:67;13334:41:16;;;;;;;13075:307;;;:::o;6424:305::-;6574:28;6584:4;6590:2;6594:7;6574:9;:28::i;:::-;6620:47;6643:4;6649:2;6653:7;6662:4;6620:22;:47::i;:::-;6612:110;;;;-1:-1:-1;;;6612:110:16;;;;;;;:::i;415:696:25:-;471:13;520:14;537:17;548:5;537:10;:17::i;:::-;557:1;537:21;520:38;;572:20;606:6;595:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;595:18:25;-1:-1:-1;572:41:25;-1:-1:-1;733:28:25;;;749:2;733:28;788:280;-1:-1:-1;;819:5:25;-1:-1:-1;;;953:2:25;942:14;;937:30;819:5;924:44;1012:2;1003:11;;;-1:-1:-1;1032:21:25;788:280;1032:21;-1:-1:-1;1088:6:25;415:696;-1:-1:-1;;;415:696:25:o;14151:831:16:-;14300:4;-1:-1:-1;;;;;14320:13:16;;1465:19:22;:23;14316:660:16;;14355:71;;-1:-1:-1;;;14355:71:16;;-1:-1:-1;;;;;14355:36:16;;;;;:71;;719:10:23;;14406:4:16;;14412:7;;14421:4;;14355:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14355:71:16;;;;;;;;-1:-1:-1;;14355:71:16;;;;;;;;;;;;:::i;:::-;;;14351:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14593:6;:13;14610:1;14593:18;14589:321;;14635:60;;-1:-1:-1;;;14635:60:16;;;;;;;:::i;14589:321::-;14862:6;14856:13;14847:6;14843:2;14839:15;14832:38;14351:573;-1:-1:-1;;;;;;14476:51:16;-1:-1:-1;;;14476:51:16;;-1:-1:-1;14469:58:16;;14316:660;-1:-1:-1;14961:4:16;14151:831;;;;;;:::o;9889:890:30:-;9942:7;;-1:-1:-1;;;10017:15:30;;10013:99;;-1:-1:-1;;;10052:15:30;;;-1:-1:-1;10095:2:30;10085:12;10013:99;10138:6;10129:5;:15;10125:99;;10173:6;10164:15;;;-1:-1:-1;10207:2:30;10197:12;10125:99;10250:6;10241:5;:15;10237:99;;10285:6;10276:15;;;-1:-1:-1;10319:2:30;10309:12;10237:99;10362:5;10353;:14;10349:96;;10396:5;10387:14;;;-1:-1:-1;10429:1:30;10419:11;10349:96;10471:5;10462;:14;10458:96;;10505:5;10496:14;;;-1:-1:-1;10538:1:30;10528:11;10458:96;10580:5;10571;:14;10567:96;;10614:5;10605:14;;;-1:-1:-1;10647:1:30;10637:11;10567:96;10689:5;10680;:14;10676:64;;10724:1;10714:11;10766:6;9889:890;-1:-1:-1;;9889:890:30:o;14:131:67:-;-1:-1:-1;;;;;;88:32:67;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:250::-;677:1;687:113;701:6;698:1;695:13;687:113;;;777:11;;;771:18;758:11;;;751:39;723:2;716:10;687:113;;;-1:-1:-1;;834:1:67;816:16;;809:27;592:250::o;847:271::-;889:3;927:5;921:12;954:6;949:3;942:19;970:76;1039:6;1032:4;1027:3;1023:14;1016:4;1009:5;1005:16;970:76;:::i;:::-;1100:2;1079:15;-1:-1:-1;;1075:29:67;1066:39;;;;1107:4;1062:50;;847:271;-1:-1:-1;;847:271:67:o;1123:220::-;1272:2;1261:9;1254:21;1235:4;1292:45;1333:2;1322:9;1318:18;1310:6;1292:45;:::i;1348:180::-;1407:6;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;-1:-1:-1;1499:23:67;;1348:180;-1:-1:-1;1348:180:67:o;1741:173::-;1809:20;;-1:-1:-1;;;;;1858:31:67;;1848:42;;1838:70;;1904:1;1901;1894:12;1838:70;1741:173;;;:::o;1919:254::-;1987:6;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2087:29;2106:9;2087:29;:::i;:::-;2077:39;2163:2;2148:18;;;;2135:32;;-1:-1:-1;;;1919:254:67:o;2178:328::-;2255:6;2263;2271;2324:2;2312:9;2303:7;2299:23;2295:32;2292:52;;;2340:1;2337;2330:12;2292:52;2363:29;2382:9;2363:29;:::i;:::-;2353:39;;2411:38;2445:2;2434:9;2430:18;2411:38;:::i;:::-;2401:48;;2496:2;2485:9;2481:18;2468:32;2458:42;;2178:328;;;;;:::o;2511:186::-;2570:6;2623:2;2611:9;2602:7;2598:23;2594:32;2591:52;;;2639:1;2636;2629:12;2591:52;2662:29;2681:9;2662:29;:::i;2884:347::-;2949:6;2957;3010:2;2998:9;2989:7;2985:23;2981:32;2978:52;;;3026:1;3023;3016:12;2978:52;3049:29;3068:9;3049:29;:::i;:::-;3039:39;;3128:2;3117:9;3113:18;3100:32;3175:5;3168:13;3161:21;3154:5;3151:32;3141:60;;3197:1;3194;3187:12;3141:60;3220:5;3210:15;;;2884:347;;;;;:::o;3236:127::-;3297:10;3292:3;3288:20;3285:1;3278:31;3328:4;3325:1;3318:15;3352:4;3349:1;3342:15;3368:1138;3463:6;3471;3479;3487;3540:3;3528:9;3519:7;3515:23;3511:33;3508:53;;;3557:1;3554;3547:12;3508:53;3580:29;3599:9;3580:29;:::i;:::-;3570:39;;3628:38;3662:2;3651:9;3647:18;3628:38;:::i;:::-;3618:48;;3713:2;3702:9;3698:18;3685:32;3675:42;;3768:2;3757:9;3753:18;3740:32;3791:18;3832:2;3824:6;3821:14;3818:34;;;3848:1;3845;3838:12;3818:34;3886:6;3875:9;3871:22;3861:32;;3931:7;3924:4;3920:2;3916:13;3912:27;3902:55;;3953:1;3950;3943:12;3902:55;3989:2;3976:16;4011:2;4007;4004:10;4001:36;;;4017:18;;:::i;:::-;4092:2;4086:9;4060:2;4146:13;;-1:-1:-1;;4142:22:67;;;4166:2;4138:31;4134:40;4122:53;;;4190:18;;;4210:22;;;4187:46;4184:72;;;4236:18;;:::i;:::-;4276:10;4272:2;4265:22;4311:2;4303:6;4296:18;4351:7;4346:2;4341;4337;4333:11;4329:20;4326:33;4323:53;;;4372:1;4369;4362:12;4323:53;4428:2;4423;4419;4415:11;4410:2;4402:6;4398:15;4385:46;4473:1;4468:2;4463;4455:6;4451:15;4447:24;4440:35;4494:6;4484:16;;;;;;;3368:1138;;;;;;;:::o;4511:260::-;4579:6;4587;4640:2;4628:9;4619:7;4615:23;4611:32;4608:52;;;4656:1;4653;4646:12;4608:52;4679:29;4698:9;4679:29;:::i;:::-;4669:39;;4727:38;4761:2;4750:9;4746:18;4727:38;:::i;:::-;4717:48;;4511:260;;;;;:::o;4776:380::-;4855:1;4851:12;;;;4898;;;4919:61;;4973:4;4965:6;4961:17;4951:27;;4919:61;5026:2;5018:6;5015:14;4995:18;4992:38;4989:161;;5072:10;5067:3;5063:20;5060:1;5053:31;5107:4;5104:1;5097:15;5135:4;5132:1;5125:15;4989:161;;4776:380;;;:::o;5993:409::-;6195:2;6177:21;;;6234:2;6214:18;;;6207:30;6273:34;6268:2;6253:18;;6246:62;-1:-1:-1;;;6339:2:67;6324:18;;6317:43;6392:3;6377:19;;5993:409::o;7170:496::-;7349:3;7387:6;7381:13;7403:66;7462:6;7457:3;7450:4;7442:6;7438:17;7403:66;:::i;:::-;7532:13;;7491:16;;;;7554:70;7532:13;7491:16;7601:4;7589:17;;7554:70;:::i;:::-;7640:20;;7170:496;-1:-1:-1;;;;7170:496:67:o;7671:401::-;7873:2;7855:21;;;7912:2;7892:18;;;7885:30;7951:34;7946:2;7931:18;;7924:62;-1:-1:-1;;;8017:2:67;8002:18;;7995:35;8062:3;8047:19;;7671:401::o;8836:414::-;9038:2;9020:21;;;9077:2;9057:18;;;9050:30;9116:34;9111:2;9096:18;;9089:62;-1:-1:-1;;;9182:2:67;9167:18;;9160:48;9240:3;9225:19;;8836:414::o;9387:489::-;-1:-1:-1;;;;;9656:15:67;;;9638:34;;9708:15;;9703:2;9688:18;;9681:43;9755:2;9740:18;;9733:34;;;9803:3;9798:2;9783:18;;9776:31;;;9581:4;;9824:46;;9850:19;;9842:6;9824:46;:::i;:::-;9816:54;9387:489;-1:-1:-1;;;;;;9387:489:67:o;9881:249::-;9950:6;10003:2;9991:9;9982:7;9978:23;9974:32;9971:52;;;10019:1;10016;10009:12;9971:52;10051:9;10045:16;10070:30;10094:5;10070:30;:::i",
  "language": "Solidity",
  "natspec": {
    "details": "Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.",
    "events": {
      "Approval(address,address,uint256)": {
        "details": "Emitted when `owner` enables `approved` to manage the `tokenId` token."
      },
      "ApprovalForAll(address,address,bool)": {
        "details": "Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."
      },
      "Transfer(address,address,uint256)": {
        "details": "Emitted when `tokenId` token is transferred from `from` to `to`."
      }
    },
    "kind": "dev",
    "methods": {
      "approve(address,uint256)": {
        "details": "See {IERC721-approve}."
      },
      "balanceOf(address)": {
        "details": "See {IERC721-balanceOf}."
      },
      "constructor": {
        "details": "Initializes the contract by setting a `name` and a `symbol` to the token collection."
      },
      "getApproved(uint256)": {
        "details": "See {IERC721-getApproved}."
      },
      "isApprovedForAll(address,address)": {
        "details": "See {IERC721-isApprovedForAll}."
      },
      "name()": {
        "details": "See {IERC721Metadata-name}."
      },
      "ownerOf(uint256)": {
        "details": "See {IERC721-ownerOf}."
      },
      "safeTransferFrom(address,address,uint256)": {
        "details": "See {IERC721-safeTransferFrom}."
      },
      "safeTransferFrom(address,address,uint256,bytes)": {
        "details": "See {IERC721-safeTransferFrom}."
      },
      "setApprovalForAll(address,bool)": {
        "details": "See {IERC721-setApprovalForAll}."
      },
      "supportsInterface(bytes4)": {
        "details": "See {IERC165-supportsInterface}."
      },
      "symbol()": {
        "details": "See {IERC721Metadata-symbol}."
      },
      "tokenURI(uint256)": {
        "details": "See {IERC721Metadata-tokenURI}."
      },
      "transferFrom(address,address,uint256)": {
        "details": "See {IERC721-transferFrom}."
      }
    },
    "version": 1
  },
  "offset": [
    628,
    17307
  ],
  "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xFC JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x111 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x164 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE7 PUSH2 0xE2 CALLDATASIZE PUSH1 0x4 PUSH2 0xC7F JUMP JUMPDEST PUSH2 0x228 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x104 PUSH2 0x27A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF3 SWAP2 SWAP1 PUSH2 0xCEC JUMP JUMPDEST PUSH2 0x124 PUSH2 0x11F CALLDATASIZE PUSH1 0x4 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0x30C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF3 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x14A CALLDATASIZE PUSH1 0x4 PUSH2 0xD34 JUMP JUMPDEST PUSH2 0x333 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x14F PUSH2 0x15F CALLDATASIZE PUSH1 0x4 PUSH2 0xD5E JUMP JUMPDEST PUSH2 0x44D JUMP JUMPDEST PUSH2 0x14F PUSH2 0x172 CALLDATASIZE PUSH1 0x4 PUSH2 0xD5E JUMP JUMPDEST PUSH2 0x47E JUMP JUMPDEST PUSH2 0x124 PUSH2 0x185 CALLDATASIZE PUSH1 0x4 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0x499 JUMP JUMPDEST PUSH2 0x19D PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0xD9A JUMP JUMPDEST PUSH2 0x4F9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF3 JUMP JUMPDEST PUSH2 0x104 PUSH2 0x57F JUMP JUMPDEST PUSH2 0x14F PUSH2 0x1C1 CALLDATASIZE PUSH1 0x4 PUSH2 0xDB5 JUMP JUMPDEST PUSH2 0x58E JUMP JUMPDEST PUSH2 0x14F PUSH2 0x1D4 CALLDATASIZE PUSH1 0x4 PUSH2 0xE07 JUMP JUMPDEST PUSH2 0x59D JUMP JUMPDEST PUSH2 0x104 PUSH2 0x1E7 CALLDATASIZE PUSH1 0x4 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0x5D5 JUMP JUMPDEST PUSH2 0xE7 PUSH2 0x1FA CALLDATASIZE PUSH1 0x4 PUSH2 0xEE3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x259 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x274 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x289 SWAP1 PUSH2 0xF16 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x2B5 SWAP1 PUSH2 0xF16 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x302 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x302 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 0x2E5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x317 DUP3 PUSH2 0x649 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33E DUP3 PUSH2 0x499 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x3B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x3CC JUMPI POP PUSH2 0x3CC DUP2 CALLER PUSH2 0x1FA JUMP JUMPDEST PUSH2 0x43E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206F7220617070726F76656420666F7220616C6C000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3A7 JUMP JUMPDEST PUSH2 0x448 DUP4 DUP4 PUSH2 0x6AB JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x457 CALLER DUP3 PUSH2 0x719 JUMP JUMPDEST PUSH2 0x473 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A7 SWAP1 PUSH2 0xF50 JUMP JUMPDEST PUSH2 0x448 DUP4 DUP4 DUP4 PUSH2 0x798 JUMP JUMPDEST PUSH2 0x448 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x59D JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x274 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3A7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x563 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3A7 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x289 SWAP1 PUSH2 0xF16 JUMP JUMPDEST PUSH2 0x599 CALLER DUP4 DUP4 PUSH2 0x8FC JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x5A7 CALLER DUP4 PUSH2 0x719 JUMP JUMPDEST PUSH2 0x5C3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A7 SWAP1 PUSH2 0xF50 JUMP JUMPDEST PUSH2 0x5CF DUP5 DUP5 DUP5 DUP5 PUSH2 0x9CA JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x5E0 DUP3 PUSH2 0x649 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F7 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x617 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x642 JUMP JUMPDEST DUP1 PUSH2 0x621 DUP5 PUSH2 0x9FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x632 SWAP3 SWAP2 SWAP1 PUSH2 0xF9D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3A7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 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 DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x6E0 DUP3 PUSH2 0x499 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x725 DUP4 PUSH2 0x499 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x76C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x790 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x785 DUP5 PUSH2 0x30C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7AB DUP3 PUSH2 0x499 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x7D1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A7 SWAP1 PUSH2 0xFCC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x833 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3A7 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x846 DUP3 PUSH2 0x499 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x86C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A7 SWAP1 PUSH2 0xFCC JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP1 DUP7 MSTORE PUSH1 0x3 DUP6 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE SWAP1 DUP8 AND DUP1 DUP7 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP7 DUP7 MSTORE PUSH1 0x2 SWAP1 SWAP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 AND DUP5 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP5 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x95D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3A7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x9D5 DUP5 DUP5 DUP5 PUSH2 0x798 JUMP JUMPDEST PUSH2 0x9E1 DUP5 DUP5 DUP5 DUP5 PUSH2 0xA90 JUMP JUMPDEST PUSH2 0x5CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A7 SWAP1 PUSH2 0x1011 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xA0A DUP4 PUSH2 0xB91 JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA2A JUMPI PUSH2 0xA2A PUSH2 0xDF1 JUMP JUMPDEST 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 0xA54 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH1 0x0 NOT ADD PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0xA5E JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0xB86 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xAD4 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1063 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xB0F JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xB0C SWAP2 DUP2 ADD SWAP1 PUSH2 0x10A0 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xB6C JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0xB3D 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 0xB42 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xB64 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A7 SWAP1 PUSH2 0x1011 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x790 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 LT PUSH2 0xBD0 JUMPI PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0xBFC JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0xC1A JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0xC32 JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0xC46 JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0xC58 JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x274 JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x6A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x642 DUP2 PUSH2 0xC69 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCB7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC9F JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xCD8 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xC9C JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x642 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xCC0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xD2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD50 DUP4 PUSH2 0xD18 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xD73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD7C DUP5 PUSH2 0xD18 JUMP JUMPDEST SWAP3 POP PUSH2 0xD8A PUSH1 0x20 DUP6 ADD PUSH2 0xD18 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x642 DUP3 PUSH2 0xD18 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDD1 DUP4 PUSH2 0xD18 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xDE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xE1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE26 DUP6 PUSH2 0xD18 JUMP JUMPDEST SWAP4 POP PUSH2 0xE34 PUSH1 0x20 DUP7 ADD PUSH2 0xD18 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xE7E JUMPI PUSH2 0xE7E PUSH2 0xDF1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xEA6 JUMPI PUSH2 0xEA6 PUSH2 0xDF1 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xEBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEFF DUP4 PUSH2 0xD18 JUMP JUMPDEST SWAP2 POP PUSH2 0xF0D PUSH1 0x20 DUP5 ADD PUSH2 0xD18 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xF2A JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xF4A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2D SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH13 0x1C881BDC88185C1C1C9BDD9959 PUSH1 0x9A SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0xFAF DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0xC9C JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0xFC3 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0xC9C JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x25 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x40 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x1096 SWAP1 DUP4 ADD DUP5 PUSH2 0xCC0 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x642 DUP2 PUSH2 0xC69 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR SHL SLT KECCAK256 KECCAK256 KECCAK256 0xC1 0xE8 0xD GASLIMIT 0x2C DUP2 0xD5 0xCA 0xC0 PUSH25 0x39333868F3A853BCAB12A96CCE1B8F2B64736F6C6343000813 STOP CALLER ",
  "pcMap": {
    "0": {
      "offset": [
        628,
        17307
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x80"
    },
    "2": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "4": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "5": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "CALLVALUE",
      "path": "16"
    },
    "6": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "DUP1",
      "path": "16"
    },
    "7": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "ISZERO",
      "path": "16"
    },
    "8": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x10"
    },
    "11": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "12": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x0"
    },
    "14": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "DUP1",
      "path": "16"
    },
    "15": {
      "dev": "Cannot send ether to nonpayable function",
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "REVERT",
      "path": "16"
    },
    "16": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "17": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "POP",
      "path": "16"
    },
    "18": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "20": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "CALLDATASIZE",
      "path": "16"
    },
    "21": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "LT",
      "path": "16"
    },
    "22": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xCF"
    },
    "25": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "26": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x0"
    },
    "28": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "CALLDATALOAD",
      "path": "16"
    },
    "29": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0xE0"
    },
    "31": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "SHR",
      "path": "16"
    },
    "32": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "DUP1",
      "path": "16"
    },
    "33": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH4",
      "path": "16",
      "value": "0x6352211E"
    },
    "38": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "GT",
      "path": "16"
    },
    "39": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x8C"
    },
    "42": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "43": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "DUP1",
      "path": "16"
    },
    "44": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH4",
      "path": "16",
      "value": "0xA22CB465"
    },
    "49": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "GT",
      "path": "16"
    },
    "50": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x66"
    },
    "53": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "54": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "DUP1",
      "path": "16"
    },
    "55": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH4",
      "path": "16",
      "value": "0xA22CB465"
    },
    "60": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "EQ",
      "path": "16"
    },
    "61": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x1B3"
    },
    "64": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "65": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "DUP1",
      "path": "16"
    },
    "66": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH4",
      "path": "16",
      "value": "0xB88D4FDE"
    },
    "71": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "EQ",
      "path": "16"
    },
    "72": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x1C6"
    },
    "75": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "76": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "DUP1",
      "path": "16"
    },
    "77": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH4",
      "path": "16",
      "value": "0xC87B56DD"
    },
    "82": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "EQ",
      "path": "16"
    },
    "83": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x1D9"
    },
    "86": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "87": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "DUP1",
      "path": "16"
    },
    "88": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH4",
      "path": "16",
      "value": "0xE985E9C5"
    },
    "93": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "EQ",
      "path": "16"
    },
    "94": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x1EC"
    },
    "97": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "98": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x0"
    },
    "100": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "DUP1",
      "path": "16"
    },
    "101": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "REVERT",
      "path": "16"
    },
    "102": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "103": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "DUP1",
      "path": "16"
    },
    "104": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH4",
      "path": "16",
      "value": "0x6352211E"
    },
    "109": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "EQ",
      "path": "16"
    },
    "110": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x177"
    },
    "113": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "114": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "DUP1",
      "path": "16"
    },
    "115": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH4",
      "path": "16",
      "value": "0x70A08231"
    },
    "120": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "EQ",
      "path": "16"
    },
    "121": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x18A"
    },
    "124": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "125": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "DUP1",
      "path": "16"
    },
    "126": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH4",
      "path": "16",
      "value": "0x95D89B41"
    },
    "131": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "EQ",
      "path": "16"
    },
    "132": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x1AB"
    },
    "135": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "136": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x0"
    },
    "138": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "DUP1",
      "path": "16"
    },
    "139": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "REVERT",
      "path": "16"
    },
    "140": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "141": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "DUP1",
      "path": "16"
    },
    "142": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH4",
      "path": "16",
      "value": "0x1FFC9A7"
    },
    "147": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "EQ",
      "path": "16"
    },
    "148": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xD4"
    },
    "151": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "152": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "DUP1",
      "path": "16"
    },
    "153": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH4",
      "path": "16",
      "value": "0x6FDDE03"
    },
    "158": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "EQ",
      "path": "16"
    },
    "159": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xFC"
    },
    "162": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "163": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "DUP1",
      "path": "16"
    },
    "164": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH4",
      "path": "16",
      "value": "0x81812FC"
    },
    "169": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "EQ",
      "path": "16"
    },
    "170": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x111"
    },
    "173": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "174": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "DUP1",
      "path": "16"
    },
    "175": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH4",
      "path": "16",
      "value": "0x95EA7B3"
    },
    "180": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "EQ",
      "path": "16"
    },
    "181": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x13C"
    },
    "184": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "185": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "DUP1",
      "path": "16"
    },
    "186": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH4",
      "path": "16",
      "value": "0x23B872DD"
    },
    "191": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "EQ",
      "path": "16"
    },
    "192": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x151"
    },
    "195": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "196": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "DUP1",
      "path": "16"
    },
    "197": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH4",
      "path": "16",
      "value": "0x42842E0E"
    },
    "202": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "EQ",
      "path": "16"
    },
    "203": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x164"
    },
    "206": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "207": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "208": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x0"
    },
    "210": {
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "DUP1",
      "path": "16"
    },
    "211": {
      "first_revert": true,
      "fn": null,
      "offset": [
        628,
        17307
      ],
      "op": "REVERT",
      "path": "16"
    },
    "212": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "213": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xE7"
    },
    "216": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xE2"
    },
    "219": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "CALLDATASIZE",
      "path": "16"
    },
    "220": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "222": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xC7F"
    },
    "225": {
      "fn": "ERC721.supportsInterface",
      "jump": "i",
      "offset": [
        1570,
        1870
      ],
      "op": "JUMP",
      "path": "16"
    },
    "226": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "227": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x228"
    },
    "230": {
      "fn": "ERC721.supportsInterface",
      "jump": "i",
      "offset": [
        1570,
        1870
      ],
      "op": "JUMP",
      "path": "16"
    },
    "231": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "232": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "234": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "235": {
      "op": "SWAP1"
    },
    "236": {
      "op": "ISZERO"
    },
    "237": {
      "op": "ISZERO"
    },
    "238": {
      "op": "DUP2"
    },
    "239": {
      "op": "MSTORE"
    },
    "240": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "242": {
      "op": "ADD"
    },
    "243": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "244": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "246": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "247": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "DUP1",
      "path": "16"
    },
    "248": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "SWAP2",
      "path": "16"
    },
    "249": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "SUB",
      "path": "16"
    },
    "250": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "251": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "RETURN",
      "path": "16"
    },
    "252": {
      "fn": "ERC721.name",
      "offset": [
        2471,
        2569
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "253": {
      "fn": "ERC721.name",
      "offset": [
        2471,
        2569
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x104"
    },
    "256": {
      "fn": "ERC721.name",
      "offset": [
        2471,
        2569
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x27A"
    },
    "259": {
      "fn": "ERC721.name",
      "jump": "i",
      "offset": [
        2471,
        2569
      ],
      "op": "JUMP",
      "path": "16"
    },
    "260": {
      "fn": "ERC721.name",
      "offset": [
        2471,
        2569
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "261": {
      "fn": "ERC721.name",
      "offset": [
        2471,
        2569
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "263": {
      "fn": "ERC721.name",
      "offset": [
        2471,
        2569
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "264": {
      "fn": "ERC721.name",
      "offset": [
        2471,
        2569
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xF3"
    },
    "267": {
      "fn": "ERC721.name",
      "offset": [
        2471,
        2569
      ],
      "op": "SWAP2",
      "path": "16"
    },
    "268": {
      "fn": "ERC721.name",
      "offset": [
        2471,
        2569
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "269": {
      "fn": "ERC721.name",
      "offset": [
        2471,
        2569
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xCEC"
    },
    "272": {
      "fn": "ERC721.name",
      "jump": "i",
      "offset": [
        2471,
        2569
      ],
      "op": "JUMP",
      "path": "16"
    },
    "273": {
      "fn": "ERC721.getApproved",
      "offset": [
        3935,
        4102
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "274": {
      "fn": "ERC721.getApproved",
      "offset": [
        3935,
        4102
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x124"
    },
    "277": {
      "fn": "ERC721.getApproved",
      "offset": [
        3935,
        4102
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x11F"
    },
    "280": {
      "fn": "ERC721.getApproved",
      "offset": [
        3935,
        4102
      ],
      "op": "CALLDATASIZE",
      "path": "16"
    },
    "281": {
      "fn": "ERC721.getApproved",
      "offset": [
        3935,
        4102
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "283": {
      "fn": "ERC721.getApproved",
      "offset": [
        3935,
        4102
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xCFF"
    },
    "286": {
      "fn": "ERC721.getApproved",
      "jump": "i",
      "offset": [
        3935,
        4102
      ],
      "op": "JUMP",
      "path": "16"
    },
    "287": {
      "fn": "ERC721.getApproved",
      "offset": [
        3935,
        4102
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "288": {
      "fn": "ERC721.getApproved",
      "offset": [
        3935,
        4102
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x30C"
    },
    "291": {
      "fn": "ERC721.getApproved",
      "jump": "i",
      "offset": [
        3935,
        4102
      ],
      "op": "JUMP",
      "path": "16"
    },
    "292": {
      "fn": "ERC721.getApproved",
      "offset": [
        3935,
        4102
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "293": {
      "fn": "ERC721.getApproved",
      "offset": [
        3935,
        4102
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "295": {
      "fn": "ERC721.getApproved",
      "offset": [
        3935,
        4102
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "296": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "298": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "300": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "302": {
      "op": "SHL"
    },
    "303": {
      "op": "SUB"
    },
    "304": {
      "op": "SWAP1"
    },
    "305": {
      "op": "SWAP2"
    },
    "306": {
      "op": "AND"
    },
    "307": {
      "op": "DUP2"
    },
    "308": {
      "op": "MSTORE"
    },
    "309": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "311": {
      "op": "ADD"
    },
    "312": {
      "fn": "ERC721.getApproved",
      "offset": [
        3935,
        4102
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xF3"
    },
    "315": {
      "op": "JUMP"
    },
    "316": {
      "fn": "ERC721.approve",
      "offset": [
        3468,
        3874
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "317": {
      "fn": "ERC721.approve",
      "offset": [
        3468,
        3874
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x14F"
    },
    "320": {
      "fn": "ERC721.approve",
      "offset": [
        3468,
        3874
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x14A"
    },
    "323": {
      "fn": "ERC721.approve",
      "offset": [
        3468,
        3874
      ],
      "op": "CALLDATASIZE",
      "path": "16"
    },
    "324": {
      "fn": "ERC721.approve",
      "offset": [
        3468,
        3874
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "326": {
      "fn": "ERC721.approve",
      "offset": [
        3468,
        3874
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xD34"
    },
    "329": {
      "fn": "ERC721.approve",
      "jump": "i",
      "offset": [
        3468,
        3874
      ],
      "op": "JUMP",
      "path": "16"
    },
    "330": {
      "fn": "ERC721.approve",
      "offset": [
        3468,
        3874
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "331": {
      "fn": "ERC721.approve",
      "offset": [
        3468,
        3874
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x333"
    },
    "334": {
      "fn": "ERC721.approve",
      "jump": "i",
      "offset": [
        3468,
        3874
      ],
      "op": "JUMP",
      "path": "16"
    },
    "335": {
      "fn": "ERC721.approve",
      "offset": [
        3468,
        3874
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "336": {
      "fn": "ERC721.approve",
      "offset": [
        3468,
        3874
      ],
      "op": "STOP",
      "path": "16"
    },
    "337": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4612,
        4938
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "338": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4612,
        4938
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x14F"
    },
    "341": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4612,
        4938
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x15F"
    },
    "344": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4612,
        4938
      ],
      "op": "CALLDATASIZE",
      "path": "16"
    },
    "345": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4612,
        4938
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "347": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4612,
        4938
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xD5E"
    },
    "350": {
      "fn": "ERC721.transferFrom",
      "jump": "i",
      "offset": [
        4612,
        4938
      ],
      "op": "JUMP",
      "path": "16"
    },
    "351": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4612,
        4938
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "352": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4612,
        4938
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x44D"
    },
    "355": {
      "fn": "ERC721.transferFrom",
      "jump": "i",
      "offset": [
        4612,
        4938
      ],
      "op": "JUMP",
      "path": "16"
    },
    "356": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5004,
        5183
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "357": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5004,
        5183
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x14F"
    },
    "360": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5004,
        5183
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x172"
    },
    "363": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5004,
        5183
      ],
      "op": "CALLDATASIZE",
      "path": "16"
    },
    "364": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5004,
        5183
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "366": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5004,
        5183
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xD5E"
    },
    "369": {
      "fn": "ERC721.safeTransferFrom",
      "jump": "i",
      "offset": [
        5004,
        5183
      ],
      "op": "JUMP",
      "path": "16"
    },
    "370": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5004,
        5183
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "371": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5004,
        5183
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x47E"
    },
    "374": {
      "fn": "ERC721.safeTransferFrom",
      "jump": "i",
      "offset": [
        5004,
        5183
      ],
      "op": "JUMP",
      "path": "16"
    },
    "375": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2190,
        2409
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "376": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2190,
        2409
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x124"
    },
    "379": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2190,
        2409
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x185"
    },
    "382": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2190,
        2409
      ],
      "op": "CALLDATASIZE",
      "path": "16"
    },
    "383": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2190,
        2409
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "385": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2190,
        2409
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xCFF"
    },
    "388": {
      "fn": "ERC721.ownerOf",
      "jump": "i",
      "offset": [
        2190,
        2409
      ],
      "op": "JUMP",
      "path": "16"
    },
    "389": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2190,
        2409
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "390": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2190,
        2409
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x499"
    },
    "393": {
      "fn": "ERC721.ownerOf",
      "jump": "i",
      "offset": [
        2190,
        2409
      ],
      "op": "JUMP",
      "path": "16"
    },
    "394": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2133
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "395": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2133
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x19D"
    },
    "398": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2133
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x198"
    },
    "401": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2133
      ],
      "op": "CALLDATASIZE",
      "path": "16"
    },
    "402": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2133
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "404": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2133
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xD9A"
    },
    "407": {
      "fn": "ERC721.balanceOf",
      "jump": "i",
      "offset": [
        1929,
        2133
      ],
      "op": "JUMP",
      "path": "16"
    },
    "408": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2133
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "409": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2133
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x4F9"
    },
    "412": {
      "fn": "ERC721.balanceOf",
      "jump": "i",
      "offset": [
        1929,
        2133
      ],
      "op": "JUMP",
      "path": "16"
    },
    "413": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2133
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "414": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2133
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "416": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2133
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "417": {
      "op": "SWAP1"
    },
    "418": {
      "op": "DUP2"
    },
    "419": {
      "op": "MSTORE"
    },
    "420": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "422": {
      "op": "ADD"
    },
    "423": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2133
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xF3"
    },
    "426": {
      "op": "JUMP"
    },
    "427": {
      "fn": "ERC721.symbol",
      "offset": [
        2633,
        2735
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "428": {
      "fn": "ERC721.symbol",
      "offset": [
        2633,
        2735
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x104"
    },
    "431": {
      "fn": "ERC721.symbol",
      "offset": [
        2633,
        2735
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x57F"
    },
    "434": {
      "fn": "ERC721.symbol",
      "jump": "i",
      "offset": [
        2633,
        2735
      ],
      "op": "JUMP",
      "path": "16"
    },
    "435": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4169,
        4322
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "436": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4169,
        4322
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x14F"
    },
    "439": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4169,
        4322
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x1C1"
    },
    "442": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4169,
        4322
      ],
      "op": "CALLDATASIZE",
      "path": "16"
    },
    "443": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4169,
        4322
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "445": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4169,
        4322
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xDB5"
    },
    "448": {
      "fn": "ERC721.setApprovalForAll",
      "jump": "i",
      "offset": [
        4169,
        4322
      ],
      "op": "JUMP",
      "path": "16"
    },
    "449": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4169,
        4322
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "450": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4169,
        4322
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x58E"
    },
    "453": {
      "fn": "ERC721.setApprovalForAll",
      "jump": "i",
      "offset": [
        4169,
        4322
      ],
      "op": "JUMP",
      "path": "16"
    },
    "454": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5249,
        5563
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "455": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5249,
        5563
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x14F"
    },
    "458": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5249,
        5563
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x1D4"
    },
    "461": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5249,
        5563
      ],
      "op": "CALLDATASIZE",
      "path": "16"
    },
    "462": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5249,
        5563
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "464": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5249,
        5563
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xE07"
    },
    "467": {
      "fn": "ERC721.safeTransferFrom",
      "jump": "i",
      "offset": [
        5249,
        5563
      ],
      "op": "JUMP",
      "path": "16"
    },
    "468": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5249,
        5563
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "469": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5249,
        5563
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x59D"
    },
    "472": {
      "fn": "ERC721.safeTransferFrom",
      "jump": "i",
      "offset": [
        5249,
        5563
      ],
      "op": "JUMP",
      "path": "16"
    },
    "473": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2801,
        3077
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "474": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2801,
        3077
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x104"
    },
    "477": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2801,
        3077
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x1E7"
    },
    "480": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2801,
        3077
      ],
      "op": "CALLDATASIZE",
      "path": "16"
    },
    "481": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2801,
        3077
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "483": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2801,
        3077
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xCFF"
    },
    "486": {
      "fn": "ERC721.tokenURI",
      "jump": "i",
      "offset": [
        2801,
        3077
      ],
      "op": "JUMP",
      "path": "16"
    },
    "487": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2801,
        3077
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "488": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2801,
        3077
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x5D5"
    },
    "491": {
      "fn": "ERC721.tokenURI",
      "jump": "i",
      "offset": [
        2801,
        3077
      ],
      "op": "JUMP",
      "path": "16"
    },
    "492": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4388,
        4550
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "493": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4388,
        4550
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xE7"
    },
    "496": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4388,
        4550
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x1FA"
    },
    "499": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4388,
        4550
      ],
      "op": "CALLDATASIZE",
      "path": "16"
    },
    "500": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4388,
        4550
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "502": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4388,
        4550
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xEE3"
    },
    "505": {
      "fn": "ERC721.isApprovedForAll",
      "jump": "i",
      "offset": [
        4388,
        4550
      ],
      "op": "JUMP",
      "path": "16"
    },
    "506": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4388,
        4550
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "507": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "509": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "511": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "513": {
      "op": "SHL"
    },
    "514": {
      "op": "SUB"
    },
    "515": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "SWAP2",
      "path": "16",
      "statement": 0
    },
    "516": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "DUP3",
      "path": "16"
    },
    "517": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "AND",
      "path": "16"
    },
    "518": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4485,
        4489
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x0"
    },
    "520": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "521": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "DUP2",
      "path": "16"
    },
    "522": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "523": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4526
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x5"
    },
    "525": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x20"
    },
    "527": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "528": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "DUP2",
      "path": "16"
    },
    "529": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "530": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "532": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "DUP1",
      "path": "16"
    },
    "533": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "DUP4",
      "path": "16"
    },
    "534": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "KECCAK256",
      "path": "16"
    },
    "535": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "SWAP4",
      "path": "16"
    },
    "536": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "537": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "SWAP5",
      "path": "16"
    },
    "538": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "AND",
      "path": "16"
    },
    "539": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "DUP3",
      "path": "16"
    },
    "540": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "541": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "SWAP2",
      "path": "16"
    },
    "542": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "543": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "SWAP2",
      "path": "16"
    },
    "544": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "545": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "KECCAK256",
      "path": "16"
    },
    "546": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "SLOAD",
      "path": "16"
    },
    "547": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0xFF"
    },
    "549": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "AND",
      "path": "16"
    },
    "550": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "551": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4388,
        4550
      ],
      "op": "JUMP",
      "path": "16"
    },
    "552": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "553": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1672,
        1676
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x0"
    },
    "555": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "557": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "559": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "561": {
      "op": "SHL"
    },
    "562": {
      "op": "SUB"
    },
    "563": {
      "op": "NOT"
    },
    "564": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1747
      ],
      "op": "DUP3",
      "path": "16",
      "statement": 1
    },
    "565": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1747
      ],
      "op": "AND",
      "path": "16"
    },
    "566": {
      "op": "PUSH4",
      "value": "0x80AC58CD"
    },
    "571": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "573": {
      "op": "SHL"
    },
    "574": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1747
      ],
      "op": "EQ",
      "path": "16"
    },
    "575": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1747
      ],
      "op": "DUP1",
      "path": "16"
    },
    "576": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1811
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x259"
    },
    "579": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1811
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "580": {
      "op": "POP"
    },
    "581": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "583": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "585": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "587": {
      "op": "SHL"
    },
    "588": {
      "op": "SUB"
    },
    "589": {
      "op": "NOT"
    },
    "590": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1763,
        1811
      ],
      "op": "DUP3",
      "path": "16"
    },
    "591": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1763,
        1811
      ],
      "op": "AND",
      "path": "16"
    },
    "592": {
      "op": "PUSH4",
      "value": "0x5B5E139F"
    },
    "597": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "599": {
      "op": "SHL"
    },
    "600": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1763,
        1811
      ],
      "op": "EQ",
      "path": "16"
    },
    "601": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1811
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "602": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1863
      ],
      "op": "DUP1",
      "path": "16"
    },
    "603": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1863
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x274"
    },
    "606": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1863
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "607": {
      "op": "POP"
    },
    "608": {
      "op": "PUSH4",
      "value": "0x1FFC9A7"
    },
    "613": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "615": {
      "op": "SHL"
    },
    "616": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "618": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "620": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "622": {
      "op": "SHL"
    },
    "623": {
      "op": "SUB"
    },
    "624": {
      "op": "NOT"
    },
    "625": {
      "fn": "ERC165.supportsInterface",
      "offset": [
        937,
        977
      ],
      "op": "DUP4",
      "path": "28",
      "statement": 2
    },
    "626": {
      "fn": "ERC165.supportsInterface",
      "offset": [
        937,
        977
      ],
      "op": "AND",
      "path": "28"
    },
    "627": {
      "fn": "ERC165.supportsInterface",
      "offset": [
        937,
        977
      ],
      "op": "EQ",
      "path": "28"
    },
    "628": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1827,
        1863
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "629": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1688,
        1863
      ],
      "op": "SWAP3",
      "path": "16"
    },
    "630": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "SWAP2",
      "path": "16"
    },
    "631": {
      "op": "POP"
    },
    "632": {
      "op": "POP"
    },
    "633": {
      "fn": "ERC721.supportsInterface",
      "jump": "o",
      "offset": [
        1570,
        1870
      ],
      "op": "JUMP",
      "path": "16"
    },
    "634": {
      "fn": "ERC721.name",
      "offset": [
        2471,
        2569
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "635": {
      "fn": "ERC721.name",
      "offset": [
        2525,
        2538
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x60"
    },
    "637": {
      "fn": "ERC721.name",
      "offset": [
        2557,
        2562
      ],
      "op": "PUSH1",
      "path": "16",
      "statement": 3,
      "value": "0x0"
    },
    "639": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "DUP1",
      "path": "16"
    },
    "640": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "SLOAD",
      "path": "16"
    },
    "641": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x289"
    },
    "644": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "645": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xF16"
    },
    "648": {
      "fn": "ERC721.name",
      "jump": "i",
      "offset": [
        2550,
        2562
      ],
      "op": "JUMP",
      "path": "16"
    },
    "649": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "650": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "DUP1",
      "path": "16"
    },
    "651": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x1F"
    },
    "653": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "ADD",
      "path": "16"
    },
    "654": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x20"
    },
    "656": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "DUP1",
      "path": "16"
    },
    "657": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "SWAP2",
      "path": "16"
    },
    "658": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "DIV",
      "path": "16"
    },
    "659": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "MUL",
      "path": "16"
    },
    "660": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x20"
    },
    "662": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "ADD",
      "path": "16"
    },
    "663": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "665": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "666": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "667": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "DUP2",
      "path": "16"
    },
    "668": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "ADD",
      "path": "16"
    },
    "669": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "671": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "672": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "DUP1",
      "path": "16"
    },
    "673": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "SWAP3",
      "path": "16"
    },
    "674": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "SWAP2",
      "path": "16"
    },
    "675": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "676": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "DUP2",
      "path": "16"
    },
    "677": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "DUP2",
      "path": "16"
    },
    "678": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "679": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x20"
    },
    "681": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "ADD",
      "path": "16"
    },
    "682": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "DUP3",
      "path": "16"
    },
    "683": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "DUP1",
      "path": "16"
    },
    "684": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "SLOAD",
      "path": "16"
    },
    "685": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x2B5"
    },
    "688": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "689": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xF16"
    },
    "692": {
      "fn": "ERC721.name",
      "jump": "i",
      "offset": [
        2550,
        2562
      ],
      "op": "JUMP",
      "path": "16"
    },
    "693": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "694": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "DUP1",
      "path": "16"
    },
    "695": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "ISZERO",
      "path": "16"
    },
    "696": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x302"
    },
    "699": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "700": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "DUP1",
      "path": "16"
    },
    "701": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x1F"
    },
    "703": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "LT",
      "path": "16"
    },
    "704": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x2D7"
    },
    "707": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "708": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x100"
    },
    "711": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "DUP1",
      "path": "16"
    },
    "712": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "DUP4",
      "path": "16"
    },
    "713": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "SLOAD",
      "path": "16"
    },
    "714": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "DIV",
      "path": "16"
    },
    "715": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "MUL",
      "path": "16"
    },
    "716": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "DUP4",
      "path": "16"
    },
    "717": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "718": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "SWAP2",
      "path": "16"
    },
    "719": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x20"
    },
    "721": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "ADD",
      "path": "16"
    },
    "722": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "SWAP2",
      "path": "16"
    },
    "723": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x302"
    },
    "726": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "JUMP",
      "path": "16"
    },
    "727": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "728": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "DUP3",
      "path": "16"
    },
    "729": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "ADD",
      "path": "16"
    },
    "730": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "SWAP2",
      "path": "16"
    },
    "731": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "732": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x0"
    },
    "734": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "735": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x20"
    },
    "737": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x0"
    },
    "739": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "KECCAK256",
      "path": "16"
    },
    "740": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "741": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "742": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "DUP2",
      "path": "16"
    },
    "743": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "SLOAD",
      "path": "16"
    },
    "744": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "DUP2",
      "path": "16"
    },
    "745": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "746": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "747": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x1"
    },
    "749": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "ADD",
      "path": "16"
    },
    "750": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "751": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x20"
    },
    "753": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "ADD",
      "path": "16"
    },
    "754": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "DUP1",
      "path": "16"
    },
    "755": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "DUP4",
      "path": "16"
    },
    "756": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "GT",
      "path": "16"
    },
    "757": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x2E5"
    },
    "760": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "761": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "DUP3",
      "path": "16"
    },
    "762": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "763": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "SUB",
      "path": "16"
    },
    "764": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x1F"
    },
    "766": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "AND",
      "path": "16"
    },
    "767": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "DUP3",
      "path": "16"
    },
    "768": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "ADD",
      "path": "16"
    },
    "769": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "SWAP2",
      "path": "16"
    },
    "770": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "771": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "POP",
      "path": "16"
    },
    "772": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "POP",
      "path": "16"
    },
    "773": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "POP",
      "path": "16"
    },
    "774": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "POP",
      "path": "16"
    },
    "775": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "POP",
      "path": "16"
    },
    "776": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "777": {
      "fn": "ERC721.name",
      "offset": [
        2550,
        2562
      ],
      "op": "POP",
      "path": "16"
    },
    "778": {
      "fn": "ERC721.name",
      "offset": [
        2471,
        2569
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "779": {
      "fn": "ERC721.name",
      "jump": "o",
      "offset": [
        2471,
        2569
      ],
      "op": "JUMP",
      "path": "16"
    },
    "780": {
      "fn": "ERC721.getApproved",
      "offset": [
        3935,
        4102
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "781": {
      "fn": "ERC721.getApproved",
      "offset": [
        4011,
        4018
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x0"
    },
    "783": {
      "fn": "ERC721.getApproved",
      "offset": [
        4030,
        4053
      ],
      "op": "PUSH2",
      "path": "16",
      "statement": 4,
      "value": "0x317"
    },
    "786": {
      "fn": "ERC721.getApproved",
      "offset": [
        4045,
        4052
      ],
      "op": "DUP3",
      "path": "16"
    },
    "787": {
      "fn": "ERC721.getApproved",
      "offset": [
        4030,
        4044
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x649"
    },
    "790": {
      "fn": "ERC721.getApproved",
      "jump": "i",
      "offset": [
        4030,
        4053
      ],
      "op": "JUMP",
      "path": "16"
    },
    "791": {
      "fn": "ERC721.getApproved",
      "offset": [
        4030,
        4053
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "792": {
      "op": "POP"
    },
    "793": {
      "fn": "ERC721.getApproved",
      "offset": [
        4071,
        4095
      ],
      "op": "PUSH1",
      "path": "16",
      "statement": 5,
      "value": "0x0"
    },
    "795": {
      "fn": "ERC721.getApproved",
      "offset": [
        4071,
        4095
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "796": {
      "fn": "ERC721.getApproved",
      "offset": [
        4071,
        4095
      ],
      "op": "DUP2",
      "path": "16"
    },
    "797": {
      "fn": "ERC721.getApproved",
      "offset": [
        4071,
        4095
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "798": {
      "fn": "ERC721.getApproved",
      "offset": [
        4071,
        4086
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "800": {
      "fn": "ERC721.getApproved",
      "offset": [
        4071,
        4095
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x20"
    },
    "802": {
      "fn": "ERC721.getApproved",
      "offset": [
        4071,
        4095
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "803": {
      "fn": "ERC721.getApproved",
      "offset": [
        4071,
        4095
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "805": {
      "fn": "ERC721.getApproved",
      "offset": [
        4071,
        4095
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "806": {
      "fn": "ERC721.getApproved",
      "offset": [
        4071,
        4095
      ],
      "op": "KECCAK256",
      "path": "16"
    },
    "807": {
      "fn": "ERC721.getApproved",
      "offset": [
        4071,
        4095
      ],
      "op": "SLOAD",
      "path": "16"
    },
    "808": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "810": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "812": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "814": {
      "op": "SHL"
    },
    "815": {
      "op": "SUB"
    },
    "816": {
      "fn": "ERC721.getApproved",
      "offset": [
        4071,
        4095
      ],
      "op": "AND",
      "path": "16"
    },
    "817": {
      "fn": "ERC721.getApproved",
      "offset": [
        4071,
        4095
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "818": {
      "fn": "ERC721.getApproved",
      "jump": "o",
      "offset": [
        3935,
        4102
      ],
      "op": "JUMP",
      "path": "16"
    },
    "819": {
      "fn": "ERC721.approve",
      "offset": [
        3468,
        3874
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "820": {
      "fn": "ERC721.approve",
      "offset": [
        3548,
        3561
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x0"
    },
    "822": {
      "fn": "ERC721.approve",
      "offset": [
        3564,
        3587
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x33E"
    },
    "825": {
      "fn": "ERC721.approve",
      "offset": [
        3579,
        3586
      ],
      "op": "DUP3",
      "path": "16"
    },
    "826": {
      "fn": "ERC721.approve",
      "offset": [
        3564,
        3578
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x499"
    },
    "829": {
      "fn": "ERC721.approve",
      "jump": "i",
      "offset": [
        3564,
        3587
      ],
      "op": "JUMP",
      "path": "16"
    },
    "830": {
      "fn": "ERC721.approve",
      "offset": [
        3564,
        3587
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "831": {
      "fn": "ERC721.approve",
      "offset": [
        3548,
        3587
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "832": {
      "fn": "ERC721.approve",
      "offset": [
        3548,
        3587
      ],
      "op": "POP",
      "path": "16"
    },
    "833": {
      "fn": "ERC721.approve",
      "offset": [
        3611,
        3616
      ],
      "op": "DUP1",
      "path": "16",
      "statement": 6
    },
    "834": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "836": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "838": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "840": {
      "op": "SHL"
    },
    "841": {
      "op": "SUB"
    },
    "842": {
      "fn": "ERC721.approve",
      "offset": [
        3605,
        3616
      ],
      "op": "AND",
      "path": "16"
    },
    "843": {
      "fn": "ERC721.approve",
      "offset": [
        3605,
        3607
      ],
      "op": "DUP4",
      "path": "16"
    },
    "844": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "846": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "848": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "850": {
      "op": "SHL"
    },
    "851": {
      "op": "SUB"
    },
    "852": {
      "fn": "ERC721.approve",
      "offset": [
        3605,
        3616
      ],
      "op": "AND",
      "path": "16"
    },
    "853": {
      "branch": 62,
      "fn": "ERC721.approve",
      "offset": [
        3605,
        3616
      ],
      "op": "SUB",
      "path": "16"
    },
    "854": {
      "fn": "ERC721.approve",
      "offset": [
        3597,
        3654
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x3B0"
    },
    "857": {
      "branch": 62,
      "fn": "ERC721.approve",
      "offset": [
        3597,
        3654
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "858": {
      "fn": "ERC721.approve",
      "offset": [
        3597,
        3654
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "860": {
      "fn": "ERC721.approve",
      "offset": [
        3597,
        3654
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "861": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "865": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "867": {
      "op": "SHL"
    },
    "868": {
      "fn": "ERC721.approve",
      "offset": [
        3597,
        3654
      ],
      "op": "DUP2",
      "path": "16"
    },
    "869": {
      "fn": "ERC721.approve",
      "offset": [
        3597,
        3654
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "870": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "872": {
      "fn": "ERC721.approve",
      "offset": [
        3597,
        3654
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "874": {
      "fn": "ERC721.approve",
      "offset": [
        3597,
        3654
      ],
      "op": "DUP3",
      "path": "16"
    },
    "875": {
      "fn": "ERC721.approve",
      "offset": [
        3597,
        3654
      ],
      "op": "ADD",
      "path": "16"
    },
    "876": {
      "op": "MSTORE"
    },
    "877": {
      "op": "PUSH1",
      "value": "0x21"
    },
    "879": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "881": {
      "op": "DUP3"
    },
    "882": {
      "op": "ADD"
    },
    "883": {
      "op": "MSTORE"
    },
    "884": {
      "op": "PUSH32",
      "value": "0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65"
    },
    "917": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "919": {
      "op": "DUP3"
    },
    "920": {
      "op": "ADD"
    },
    "921": {
      "op": "MSTORE"
    },
    "922": {
      "op": "PUSH1",
      "value": "0x39"
    },
    "924": {
      "op": "PUSH1",
      "value": "0xF9"
    },
    "926": {
      "op": "SHL"
    },
    "927": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "929": {
      "op": "DUP3"
    },
    "930": {
      "op": "ADD"
    },
    "931": {
      "op": "MSTORE"
    },
    "932": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "934": {
      "op": "ADD"
    },
    "935": {
      "fn": "ERC721.approve",
      "offset": [
        3597,
        3654
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "936": {
      "fn": "ERC721.approve",
      "offset": [
        3597,
        3654
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "938": {
      "fn": "ERC721.approve",
      "offset": [
        3597,
        3654
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "939": {
      "fn": "ERC721.approve",
      "offset": [
        3597,
        3654
      ],
      "op": "DUP1",
      "path": "16"
    },
    "940": {
      "fn": "ERC721.approve",
      "offset": [
        3597,
        3654
      ],
      "op": "SWAP2",
      "path": "16"
    },
    "941": {
      "fn": "ERC721.approve",
      "offset": [
        3597,
        3654
      ],
      "op": "SUB",
      "path": "16"
    },
    "942": {
      "fn": "ERC721.approve",
      "offset": [
        3597,
        3654
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "943": {
      "fn": "ERC721.approve",
      "offset": [
        3597,
        3654
      ],
      "op": "REVERT",
      "optimizer_revert": true,
      "path": "16"
    },
    "944": {
      "fn": "ERC721.approve",
      "offset": [
        3597,
        3654
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "945": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "CALLER",
      "path": "23",
      "statement": 7
    },
    "946": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "948": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "950": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "952": {
      "op": "SHL"
    },
    "953": {
      "op": "SUB"
    },
    "954": {
      "fn": "ERC721.approve",
      "offset": [
        3686,
        3707
      ],
      "op": "DUP3",
      "path": "16",
      "statement": 8
    },
    "955": {
      "fn": "ERC721.approve",
      "offset": [
        3686,
        3707
      ],
      "op": "AND",
      "path": "16"
    },
    "956": {
      "fn": "ERC721.approve",
      "offset": [
        3686,
        3707
      ],
      "op": "EQ",
      "path": "16"
    },
    "957": {
      "branch": 63,
      "fn": "ERC721.approve",
      "offset": [
        3686,
        3707
      ],
      "op": "DUP1",
      "path": "16"
    },
    "958": {
      "fn": "ERC721.approve",
      "offset": [
        3686,
        3748
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x3CC"
    },
    "961": {
      "branch": 63,
      "fn": "ERC721.approve",
      "offset": [
        3686,
        3748
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "962": {
      "op": "POP"
    },
    "963": {
      "fn": "ERC721.approve",
      "offset": [
        3711,
        3748
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x3CC"
    },
    "966": {
      "fn": "ERC721.approve",
      "offset": [
        3728,
        3733
      ],
      "op": "DUP2",
      "path": "16"
    },
    "967": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "CALLER",
      "path": "23"
    },
    "968": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4388,
        4550
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x1FA"
    },
    "971": {
      "fn": "ERC721.isApprovedForAll",
      "jump": "i",
      "offset": [
        4388,
        4550
      ],
      "op": "JUMP",
      "path": "16"
    },
    "972": {
      "branch": 64,
      "fn": "ERC721.approve",
      "offset": [
        3711,
        3748
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "973": {
      "fn": "ERC721.approve",
      "offset": [
        3665,
        3835
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x43E"
    },
    "976": {
      "branch": 64,
      "fn": "ERC721.approve",
      "offset": [
        3665,
        3835
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "977": {
      "fn": "ERC721.approve",
      "offset": [
        3665,
        3835
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "979": {
      "fn": "ERC721.approve",
      "offset": [
        3665,
        3835
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "980": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "984": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "986": {
      "op": "SHL"
    },
    "987": {
      "fn": "ERC721.approve",
      "offset": [
        3665,
        3835
      ],
      "op": "DUP2",
      "path": "16"
    },
    "988": {
      "fn": "ERC721.approve",
      "offset": [
        3665,
        3835
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "989": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "991": {
      "fn": "ERC721.approve",
      "offset": [
        3665,
        3835
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "993": {
      "fn": "ERC721.approve",
      "offset": [
        3665,
        3835
      ],
      "op": "DUP3",
      "path": "16"
    },
    "994": {
      "fn": "ERC721.approve",
      "offset": [
        3665,
        3835
      ],
      "op": "ADD",
      "path": "16"
    },
    "995": {
      "op": "MSTORE"
    },
    "996": {
      "op": "PUSH1",
      "value": "0x3D"
    },
    "998": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1000": {
      "op": "DUP3"
    },
    "1001": {
      "op": "ADD"
    },
    "1002": {
      "op": "MSTORE"
    },
    "1003": {
      "op": "PUSH32",
      "value": "0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F"
    },
    "1036": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1038": {
      "op": "DUP3"
    },
    "1039": {
      "op": "ADD"
    },
    "1040": {
      "op": "MSTORE"
    },
    "1041": {
      "op": "PUSH32",
      "value": "0x6B656E206F776E6572206F7220617070726F76656420666F7220616C6C000000"
    },
    "1074": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "1076": {
      "op": "DUP3"
    },
    "1077": {
      "op": "ADD"
    },
    "1078": {
      "op": "MSTORE"
    },
    "1079": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "1081": {
      "op": "ADD"
    },
    "1082": {
      "fn": "ERC721.approve",
      "offset": [
        3665,
        3835
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x3A7"
    },
    "1085": {
      "op": "JUMP"
    },
    "1086": {
      "fn": "ERC721.approve",
      "offset": [
        3665,
        3835
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1087": {
      "fn": "ERC721.approve",
      "offset": [
        3846,
        3867
      ],
      "op": "PUSH2",
      "path": "16",
      "statement": 9,
      "value": "0x448"
    },
    "1090": {
      "fn": "ERC721.approve",
      "offset": [
        3855,
        3857
      ],
      "op": "DUP4",
      "path": "16"
    },
    "1091": {
      "fn": "ERC721.approve",
      "offset": [
        3859,
        3866
      ],
      "op": "DUP4",
      "path": "16"
    },
    "1092": {
      "fn": "ERC721.approve",
      "offset": [
        3846,
        3854
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x6AB"
    },
    "1095": {
      "fn": "ERC721.approve",
      "jump": "i",
      "offset": [
        3846,
        3867
      ],
      "op": "JUMP",
      "path": "16"
    },
    "1096": {
      "fn": "ERC721.approve",
      "offset": [
        3846,
        3867
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1097": {
      "fn": "ERC721.approve",
      "offset": [
        3538,
        3874
      ],
      "op": "POP",
      "path": "16"
    },
    "1098": {
      "fn": "ERC721.approve",
      "offset": [
        3468,
        3874
      ],
      "op": "POP",
      "path": "16"
    },
    "1099": {
      "fn": "ERC721.approve",
      "offset": [
        3468,
        3874
      ],
      "op": "POP",
      "path": "16"
    },
    "1100": {
      "fn": "ERC721.approve",
      "jump": "o",
      "offset": [
        3468,
        3874
      ],
      "op": "JUMP",
      "path": "16"
    },
    "1101": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4612,
        4938
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1102": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4801,
        4842
      ],
      "op": "PUSH2",
      "path": "16",
      "statement": 10,
      "value": "0x457"
    },
    "1105": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "CALLER",
      "path": "23"
    },
    "1106": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4834,
        4841
      ],
      "op": "DUP3",
      "path": "16"
    },
    "1107": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4801,
        4819
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x719"
    },
    "1110": {
      "fn": "ERC721.transferFrom",
      "jump": "i",
      "offset": [
        4801,
        4842
      ],
      "op": "JUMP",
      "path": "16"
    },
    "1111": {
      "branch": 65,
      "fn": "ERC721.transferFrom",
      "offset": [
        4801,
        4842
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1112": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4793,
        4892
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x473"
    },
    "1115": {
      "branch": 65,
      "fn": "ERC721.transferFrom",
      "offset": [
        4793,
        4892
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "1116": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4793,
        4892
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "1118": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4793,
        4892
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "1119": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1123": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1125": {
      "op": "SHL"
    },
    "1126": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4793,
        4892
      ],
      "op": "DUP2",
      "path": "16"
    },
    "1127": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4793,
        4892
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "1128": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4793,
        4892
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "1130": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4793,
        4892
      ],
      "op": "ADD",
      "path": "16"
    },
    "1131": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4793,
        4892
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x3A7"
    },
    "1134": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4793,
        4892
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "1135": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4793,
        4892
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xF50"
    },
    "1138": {
      "fn": "ERC721.transferFrom",
      "jump": "i",
      "offset": [
        4793,
        4892
      ],
      "op": "JUMP",
      "path": "16"
    },
    "1139": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4793,
        4892
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1140": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4903,
        4931
      ],
      "op": "PUSH2",
      "path": "16",
      "statement": 11,
      "value": "0x448"
    },
    "1143": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4913,
        4917
      ],
      "op": "DUP4",
      "path": "16"
    },
    "1144": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4919,
        4921
      ],
      "op": "DUP4",
      "path": "16"
    },
    "1145": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4923,
        4930
      ],
      "op": "DUP4",
      "path": "16"
    },
    "1146": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4903,
        4912
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x798"
    },
    "1149": {
      "fn": "ERC721.transferFrom",
      "jump": "i",
      "offset": [
        4903,
        4931
      ],
      "op": "JUMP",
      "path": "16"
    },
    "1150": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5004,
        5183
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1151": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5137,
        5176
      ],
      "op": "PUSH2",
      "path": "16",
      "statement": 12,
      "value": "0x448"
    },
    "1154": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5154,
        5158
      ],
      "op": "DUP4",
      "path": "16"
    },
    "1155": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5160,
        5162
      ],
      "op": "DUP4",
      "path": "16"
    },
    "1156": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5164,
        5171
      ],
      "op": "DUP4",
      "path": "16"
    },
    "1157": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5137,
        5176
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "1159": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5137,
        5176
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "1160": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5137,
        5176
      ],
      "op": "DUP1",
      "path": "16"
    },
    "1161": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5137,
        5176
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x20"
    },
    "1163": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5137,
        5176
      ],
      "op": "ADD",
      "path": "16"
    },
    "1164": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5137,
        5176
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "1166": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5137,
        5176
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "1167": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5137,
        5176
      ],
      "op": "DUP1",
      "path": "16"
    },
    "1168": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5137,
        5176
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x0"
    },
    "1170": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5137,
        5176
      ],
      "op": "DUP2",
      "path": "16"
    },
    "1171": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5137,
        5176
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "1172": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5137,
        5176
      ],
      "op": "POP",
      "path": "16"
    },
    "1173": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5137,
        5153
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x59D"
    },
    "1176": {
      "fn": "ERC721.safeTransferFrom",
      "jump": "i",
      "offset": [
        5137,
        5176
      ],
      "op": "JUMP",
      "path": "16"
    },
    "1177": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2190,
        2409
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1178": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2262,
        2269
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x0"
    },
    "1180": {
      "fn": "ERC721._ownerOf",
      "offset": [
        6930,
        6946
      ],
      "op": "DUP2",
      "path": "16",
      "statement": 13
    },
    "1181": {
      "fn": "ERC721._ownerOf",
      "offset": [
        6930,
        6946
      ],
      "op": "DUP2",
      "path": "16"
    },
    "1182": {
      "fn": "ERC721._ownerOf",
      "offset": [
        6930,
        6946
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "1183": {
      "fn": "ERC721._ownerOf",
      "offset": [
        6930,
        6937
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x2"
    },
    "1185": {
      "fn": "ERC721._ownerOf",
      "offset": [
        6930,
        6946
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x20"
    },
    "1187": {
      "fn": "ERC721._ownerOf",
      "offset": [
        6930,
        6946
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "1188": {
      "fn": "ERC721._ownerOf",
      "offset": [
        6930,
        6946
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "1190": {
      "fn": "ERC721._ownerOf",
      "offset": [
        6930,
        6946
      ],
      "op": "DUP2",
      "path": "16"
    },
    "1191": {
      "fn": "ERC721._ownerOf",
      "offset": [
        6930,
        6946
      ],
      "op": "KECCAK256",
      "path": "16"
    },
    "1192": {
      "fn": "ERC721._ownerOf",
      "offset": [
        6930,
        6946
      ],
      "op": "SLOAD",
      "path": "16"
    },
    "1193": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1195": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1197": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1199": {
      "op": "SHL"
    },
    "1200": {
      "op": "SUB"
    },
    "1201": {
      "fn": "ERC721._ownerOf",
      "offset": [
        6930,
        6946
      ],
      "op": "AND",
      "path": "16"
    },
    "1202": {
      "fn": "ERC721._ownerOf",
      "offset": [
        6930,
        6946
      ],
      "op": "DUP1",
      "path": "16"
    },
    "1203": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2324,
        2380
      ],
      "op": "PUSH2",
      "path": "16",
      "statement": 14,
      "value": "0x274"
    },
    "1206": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2324,
        2380
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "1207": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2324,
        2380
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "1209": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2324,
        2380
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "1210": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1214": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1216": {
      "op": "SHL"
    },
    "1217": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2324,
        2380
      ],
      "op": "DUP2",
      "path": "16"
    },
    "1218": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2324,
        2380
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "1219": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1221": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2324,
        2380
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "1223": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2324,
        2380
      ],
      "op": "DUP3",
      "path": "16"
    },
    "1224": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2324,
        2380
      ],
      "op": "ADD",
      "path": "16"
    },
    "1225": {
      "op": "MSTORE"
    },
    "1226": {
      "op": "PUSH1",
      "value": "0x18"
    },
    "1228": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1230": {
      "op": "DUP3"
    },
    "1231": {
      "op": "ADD"
    },
    "1232": {
      "op": "MSTORE"
    },
    "1233": {
      "op": "PUSH24",
      "value": "0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251"
    },
    "1258": {
      "op": "PUSH1",
      "value": "0x42"
    },
    "1260": {
      "op": "SHL"
    },
    "1261": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1263": {
      "op": "DUP3"
    },
    "1264": {
      "op": "ADD"
    },
    "1265": {
      "op": "MSTORE"
    },
    "1266": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "1268": {
      "op": "ADD"
    },
    "1269": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2324,
        2380
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x3A7"
    },
    "1272": {
      "op": "JUMP"
    },
    "1273": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2133
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1274": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2001,
        2008
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x0"
    },
    "1276": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1278": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1280": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1282": {
      "op": "SHL"
    },
    "1283": {
      "op": "SUB"
    },
    "1284": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2028,
        2047
      ],
      "op": "DUP3",
      "path": "16",
      "statement": 15
    },
    "1285": {
      "branch": 66,
      "fn": "ERC721.balanceOf",
      "offset": [
        2028,
        2047
      ],
      "op": "AND",
      "path": "16"
    },
    "1286": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2093
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x563"
    },
    "1289": {
      "branch": 66,
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2093
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "1290": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2093
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "1292": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2093
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "1293": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1297": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1299": {
      "op": "SHL"
    },
    "1300": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2093
      ],
      "op": "DUP2",
      "path": "16"
    },
    "1301": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2093
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "1302": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1304": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2093
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "1306": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2093
      ],
      "op": "DUP3",
      "path": "16"
    },
    "1307": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2093
      ],
      "op": "ADD",
      "path": "16"
    },
    "1308": {
      "op": "MSTORE"
    },
    "1309": {
      "op": "PUSH1",
      "value": "0x29"
    },
    "1311": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1313": {
      "op": "DUP3"
    },
    "1314": {
      "op": "ADD"
    },
    "1315": {
      "op": "MSTORE"
    },
    "1316": {
      "op": "PUSH32",
      "value": "0x4552433732313A2061646472657373207A65726F206973206E6F742061207661"
    },
    "1349": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1351": {
      "op": "DUP3"
    },
    "1352": {
      "op": "ADD"
    },
    "1353": {
      "op": "MSTORE"
    },
    "1354": {
      "op": "PUSH9",
      "value": "0x3634B21037BBB732B9"
    },
    "1364": {
      "op": "PUSH1",
      "value": "0xB9"
    },
    "1366": {
      "op": "SHL"
    },
    "1367": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "1369": {
      "op": "DUP3"
    },
    "1370": {
      "op": "ADD"
    },
    "1371": {
      "op": "MSTORE"
    },
    "1372": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "1374": {
      "op": "ADD"
    },
    "1375": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2093
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x3A7"
    },
    "1378": {
      "op": "JUMP"
    },
    "1379": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2093
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1380": {
      "op": "POP"
    },
    "1381": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1383": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1385": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1387": {
      "op": "SHL"
    },
    "1388": {
      "op": "SUB"
    },
    "1389": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2110,
        2126
      ],
      "op": "AND",
      "path": "16",
      "statement": 16
    },
    "1390": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2110,
        2126
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x0"
    },
    "1392": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2110,
        2126
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "1393": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2110,
        2126
      ],
      "op": "DUP2",
      "path": "16"
    },
    "1394": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2110,
        2126
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "1395": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2110,
        2119
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x3"
    },
    "1397": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2110,
        2126
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x20"
    },
    "1399": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2110,
        2126
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "1400": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2110,
        2126
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "1402": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2110,
        2126
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "1403": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2110,
        2126
      ],
      "op": "KECCAK256",
      "path": "16"
    },
    "1404": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2110,
        2126
      ],
      "op": "SLOAD",
      "path": "16"
    },
    "1405": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2110,
        2126
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "1406": {
      "fn": "ERC721.balanceOf",
      "jump": "o",
      "offset": [
        1929,
        2133
      ],
      "op": "JUMP",
      "path": "16"
    },
    "1407": {
      "fn": "ERC721.symbol",
      "offset": [
        2633,
        2735
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1408": {
      "fn": "ERC721.symbol",
      "offset": [
        2689,
        2702
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x60"
    },
    "1410": {
      "fn": "ERC721.symbol",
      "offset": [
        2721,
        2728
      ],
      "op": "PUSH1",
      "path": "16",
      "statement": 17,
      "value": "0x1"
    },
    "1412": {
      "fn": "ERC721.symbol",
      "offset": [
        2714,
        2728
      ],
      "op": "DUP1",
      "path": "16"
    },
    "1413": {
      "fn": "ERC721.symbol",
      "offset": [
        2714,
        2728
      ],
      "op": "SLOAD",
      "path": "16"
    },
    "1414": {
      "fn": "ERC721.symbol",
      "offset": [
        2714,
        2728
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x289"
    },
    "1417": {
      "fn": "ERC721.symbol",
      "offset": [
        2714,
        2728
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "1418": {
      "fn": "ERC721.symbol",
      "offset": [
        2714,
        2728
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xF16"
    },
    "1421": {
      "fn": "ERC721.symbol",
      "jump": "i",
      "offset": [
        2714,
        2728
      ],
      "op": "JUMP",
      "path": "16"
    },
    "1422": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4169,
        4322
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1423": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4263,
        4315
      ],
      "op": "PUSH2",
      "path": "16",
      "statement": 18,
      "value": "0x599"
    },
    "1426": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "CALLER",
      "path": "23"
    },
    "1427": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4296,
        4304
      ],
      "op": "DUP4",
      "path": "16"
    },
    "1428": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4306,
        4314
      ],
      "op": "DUP4",
      "path": "16"
    },
    "1429": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4263,
        4281
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x8FC"
    },
    "1432": {
      "fn": "ERC721.setApprovalForAll",
      "jump": "i",
      "offset": [
        4263,
        4315
      ],
      "op": "JUMP",
      "path": "16"
    },
    "1433": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4263,
        4315
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1434": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4169,
        4322
      ],
      "op": "POP",
      "path": "16"
    },
    "1435": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4169,
        4322
      ],
      "op": "POP",
      "path": "16"
    },
    "1436": {
      "fn": "ERC721.setApprovalForAll",
      "jump": "o",
      "offset": [
        4169,
        4322
      ],
      "op": "JUMP",
      "path": "16"
    },
    "1437": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5249,
        5563
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1438": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5417,
        5458
      ],
      "op": "PUSH2",
      "path": "16",
      "statement": 19,
      "value": "0x5A7"
    },
    "1441": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "CALLER",
      "path": "23"
    },
    "1442": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5450,
        5457
      ],
      "op": "DUP4",
      "path": "16"
    },
    "1443": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5417,
        5435
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x719"
    },
    "1446": {
      "fn": "ERC721.safeTransferFrom",
      "jump": "i",
      "offset": [
        5417,
        5458
      ],
      "op": "JUMP",
      "path": "16"
    },
    "1447": {
      "branch": 67,
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5417,
        5458
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1448": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5409,
        5508
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x5C3"
    },
    "1451": {
      "branch": 67,
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5409,
        5508
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "1452": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5409,
        5508
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "1454": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5409,
        5508
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "1455": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1459": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1461": {
      "op": "SHL"
    },
    "1462": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5409,
        5508
      ],
      "op": "DUP2",
      "path": "16"
    },
    "1463": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5409,
        5508
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "1464": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5409,
        5508
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "1466": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5409,
        5508
      ],
      "op": "ADD",
      "path": "16"
    },
    "1467": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5409,
        5508
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x3A7"
    },
    "1470": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5409,
        5508
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "1471": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5409,
        5508
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xF50"
    },
    "1474": {
      "fn": "ERC721.safeTransferFrom",
      "jump": "i",
      "offset": [
        5409,
        5508
      ],
      "op": "JUMP",
      "path": "16"
    },
    "1475": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5409,
        5508
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1476": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5518,
        5556
      ],
      "op": "PUSH2",
      "path": "16",
      "statement": 20,
      "value": "0x5CF"
    },
    "1479": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5532,
        5536
      ],
      "op": "DUP5",
      "path": "16"
    },
    "1480": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5538,
        5540
      ],
      "op": "DUP5",
      "path": "16"
    },
    "1481": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5542,
        5549
      ],
      "op": "DUP5",
      "path": "16"
    },
    "1482": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5551,
        5555
      ],
      "op": "DUP5",
      "path": "16"
    },
    "1483": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5518,
        5531
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x9CA"
    },
    "1486": {
      "fn": "ERC721.safeTransferFrom",
      "jump": "i",
      "offset": [
        5518,
        5556
      ],
      "op": "JUMP",
      "path": "16"
    },
    "1487": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5518,
        5556
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1488": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5249,
        5563
      ],
      "op": "POP",
      "path": "16"
    },
    "1489": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5249,
        5563
      ],
      "op": "POP",
      "path": "16"
    },
    "1490": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5249,
        5563
      ],
      "op": "POP",
      "path": "16"
    },
    "1491": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5249,
        5563
      ],
      "op": "POP",
      "path": "16"
    },
    "1492": {
      "fn": "ERC721.safeTransferFrom",
      "jump": "o",
      "offset": [
        5249,
        5563
      ],
      "op": "JUMP",
      "path": "16"
    },
    "1493": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2801,
        3077
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1494": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2874,
        2887
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x60"
    },
    "1496": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2899,
        2922
      ],
      "op": "PUSH2",
      "path": "16",
      "statement": 21,
      "value": "0x5E0"
    },
    "1499": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2914,
        2921
      ],
      "op": "DUP3",
      "path": "16"
    },
    "1500": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2899,
        2913
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x649"
    },
    "1503": {
      "fn": "ERC721.tokenURI",
      "jump": "i",
      "offset": [
        2899,
        2922
      ],
      "op": "JUMP",
      "path": "16"
    },
    "1504": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2899,
        2922
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1505": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2933,
        2954
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x0"
    },
    "1507": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2957,
        2967
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x5F7"
    },
    "1510": {
      "fn": "ERC721._baseURI",
      "offset": [
        3395,
        3404
      ],
      "op": "PUSH1",
      "path": "16",
      "statement": 22,
      "value": "0x40"
    },
    "1512": {
      "fn": "ERC721._baseURI",
      "offset": [
        3395,
        3404
      ],
      "op": "DUP1",
      "path": "16"
    },
    "1513": {
      "fn": "ERC721._baseURI",
      "offset": [
        3395,
        3404
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "1514": {
      "fn": "ERC721._baseURI",
      "offset": [
        3395,
        3404
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x20"
    },
    "1516": {
      "fn": "ERC721._baseURI",
      "offset": [
        3395,
        3404
      ],
      "op": "DUP2",
      "path": "16"
    },
    "1517": {
      "fn": "ERC721._baseURI",
      "offset": [
        3395,
        3404
      ],
      "op": "ADD",
      "path": "16"
    },
    "1518": {
      "fn": "ERC721._baseURI",
      "offset": [
        3395,
        3404
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "1519": {
      "fn": "ERC721._baseURI",
      "offset": [
        3395,
        3404
      ],
      "op": "SWAP2",
      "path": "16"
    },
    "1520": {
      "fn": "ERC721._baseURI",
      "offset": [
        3395,
        3404
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "1521": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1523": {
      "fn": "ERC721._baseURI",
      "offset": [
        3395,
        3404
      ],
      "op": "DUP2",
      "path": "16"
    },
    "1524": {
      "fn": "ERC721._baseURI",
      "offset": [
        3395,
        3404
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "1525": {
      "fn": "ERC721._baseURI",
      "offset": [
        3395,
        3404
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "1526": {
      "fn": "ERC721._baseURI",
      "offset": [
        3319,
        3411
      ],
      "op": "JUMP",
      "path": "16"
    },
    "1527": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2957,
        2967
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1528": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2933,
        2967
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "1529": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2933,
        2967
      ],
      "op": "POP",
      "path": "16"
    },
    "1530": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3008,
        3009
      ],
      "op": "PUSH1",
      "path": "16",
      "statement": 23,
      "value": "0x0"
    },
    "1532": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2990,
        2997
      ],
      "op": "DUP2",
      "path": "16"
    },
    "1533": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2984,
        3005
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "1534": {
      "branch": 68,
      "fn": "ERC721.tokenURI",
      "offset": [
        2984,
        3009
      ],
      "op": "GT",
      "path": "16"
    },
    "1535": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2984,
        3070
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x617"
    },
    "1538": {
      "branch": 68,
      "fn": "ERC721.tokenURI",
      "offset": [
        2984,
        3070
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "1539": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2984,
        3070
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "1541": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2984,
        3070
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "1542": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2984,
        3070
      ],
      "op": "DUP1",
      "path": "16"
    },
    "1543": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2984,
        3070
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x20"
    },
    "1545": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2984,
        3070
      ],
      "op": "ADD",
      "path": "16"
    },
    "1546": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2984,
        3070
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "1548": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2984,
        3070
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "1549": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2984,
        3070
      ],
      "op": "DUP1",
      "path": "16"
    },
    "1550": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2984,
        3070
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x0"
    },
    "1552": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2984,
        3070
      ],
      "op": "DUP2",
      "path": "16"
    },
    "1553": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2984,
        3070
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "1554": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2984,
        3070
      ],
      "op": "POP",
      "path": "16"
    },
    "1555": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2984,
        3070
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x642"
    },
    "1558": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2984,
        3070
      ],
      "op": "JUMP",
      "path": "16"
    },
    "1559": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2984,
        3070
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1560": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3036,
        3043
      ],
      "op": "DUP1",
      "path": "16"
    },
    "1561": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3045,
        3063
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x621"
    },
    "1564": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3045,
        3052
      ],
      "op": "DUP5",
      "path": "16"
    },
    "1565": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3045,
        3061
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x9FD"
    },
    "1568": {
      "fn": "ERC721.tokenURI",
      "jump": "i",
      "offset": [
        3045,
        3063
      ],
      "op": "JUMP",
      "path": "16"
    },
    "1569": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3045,
        3063
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1570": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3019,
        3064
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "1572": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3019,
        3064
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "1573": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3019,
        3064
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x20"
    },
    "1575": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3019,
        3064
      ],
      "op": "ADD",
      "path": "16"
    },
    "1576": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3019,
        3064
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x632"
    },
    "1579": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3019,
        3064
      ],
      "op": "SWAP3",
      "path": "16"
    },
    "1580": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3019,
        3064
      ],
      "op": "SWAP2",
      "path": "16"
    },
    "1581": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3019,
        3064
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "1582": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3019,
        3064
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xF9D"
    },
    "1585": {
      "fn": "ERC721.tokenURI",
      "jump": "i",
      "offset": [
        3019,
        3064
      ],
      "op": "JUMP",
      "path": "16"
    },
    "1586": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3019,
        3064
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1587": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3019,
        3064
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "1589": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3019,
        3064
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "1590": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3019,
        3064
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x20"
    },
    "1592": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3019,
        3064
      ],
      "op": "DUP2",
      "path": "16"
    },
    "1593": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3019,
        3064
      ],
      "op": "DUP4",
      "path": "16"
    },
    "1594": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3019,
        3064
      ],
      "op": "SUB",
      "path": "16"
    },
    "1595": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3019,
        3064
      ],
      "op": "SUB",
      "path": "16"
    },
    "1596": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3019,
        3064
      ],
      "op": "DUP2",
      "path": "16"
    },
    "1597": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3019,
        3064
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "1598": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3019,
        3064
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "1599": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3019,
        3064
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "1601": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3019,
        3064
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "1602": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2984,
        3070
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1603": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2977,
        3070
      ],
      "op": "SWAP4",
      "path": "16"
    },
    "1604": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2801,
        3077
      ],
      "op": "SWAP3",
      "path": "16"
    },
    "1605": {
      "op": "POP"
    },
    "1606": {
      "op": "POP"
    },
    "1607": {
      "op": "POP"
    },
    "1608": {
      "fn": "ERC721.tokenURI",
      "jump": "o",
      "offset": [
        2801,
        3077
      ],
      "op": "JUMP",
      "path": "16"
    },
    "1609": {
      "fn": "ERC721._requireMinted",
      "offset": [
        13466,
        13599
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1610": {
      "fn": "ERC721._exists",
      "offset": [
        7321,
        7325
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x0"
    },
    "1612": {
      "fn": "ERC721._ownerOf",
      "offset": [
        6930,
        6946
      ],
      "op": "DUP2",
      "path": "16"
    },
    "1613": {
      "fn": "ERC721._ownerOf",
      "offset": [
        6930,
        6946
      ],
      "op": "DUP2",
      "path": "16"
    },
    "1614": {
      "fn": "ERC721._ownerOf",
      "offset": [
        6930,
        6946
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "1615": {
      "fn": "ERC721._ownerOf",
      "offset": [
        6930,
        6937
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x2"
    },
    "1617": {
      "fn": "ERC721._ownerOf",
      "offset": [
        6930,
        6946
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x20"
    },
    "1619": {
      "fn": "ERC721._ownerOf",
      "offset": [
        6930,
        6946
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "1620": {
      "fn": "ERC721._ownerOf",
      "offset": [
        6930,
        6946
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "1622": {
      "fn": "ERC721._ownerOf",
      "offset": [
        6930,
        6946
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "1623": {
      "fn": "ERC721._ownerOf",
      "offset": [
        6930,
        6946
      ],
      "op": "KECCAK256",
      "path": "16"
    },
    "1624": {
      "fn": "ERC721._ownerOf",
      "offset": [
        6930,
        6946
      ],
      "op": "SLOAD",
      "path": "16"
    },
    "1625": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1627": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1629": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1631": {
      "op": "SHL"
    },
    "1632": {
      "op": "SUB"
    },
    "1633": {
      "fn": "ERC721._ownerOf",
      "offset": [
        6930,
        6946
      ],
      "op": "AND",
      "path": "16"
    },
    "1634": {
      "fn": "ERC721._requireMinted",
      "offset": [
        13539,
        13592
      ],
      "op": "PUSH2",
      "path": "16",
      "statement": 24,
      "value": "0x6A8"
    },
    "1637": {
      "fn": "ERC721._requireMinted",
      "offset": [
        13539,
        13592
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "1638": {
      "fn": "ERC721._requireMinted",
      "offset": [
        13539,
        13592
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "1640": {
      "fn": "ERC721._requireMinted",
      "offset": [
        13539,
        13592
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "1641": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1645": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1647": {
      "op": "SHL"
    },
    "1648": {
      "fn": "ERC721._requireMinted",
      "offset": [
        13539,
        13592
      ],
      "op": "DUP2",
      "path": "16"
    },
    "1649": {
      "fn": "ERC721._requireMinted",
      "offset": [
        13539,
        13592
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "1650": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1652": {
      "fn": "ERC721._requireMinted",
      "offset": [
        13539,
        13592
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "1654": {
      "fn": "ERC721._requireMinted",
      "offset": [
        13539,
        13592
      ],
      "op": "DUP3",
      "path": "16"
    },
    "1655": {
      "fn": "ERC721._requireMinted",
      "offset": [
        13539,
        13592
      ],
      "op": "ADD",
      "path": "16"
    },
    "1656": {
      "op": "MSTORE"
    },
    "1657": {
      "op": "PUSH1",
      "value": "0x18"
    },
    "1659": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1661": {
      "op": "DUP3"
    },
    "1662": {
      "op": "ADD"
    },
    "1663": {
      "op": "MSTORE"
    },
    "1664": {
      "op": "PUSH24",
      "value": "0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251"
    },
    "1689": {
      "op": "PUSH1",
      "value": "0x42"
    },
    "1691": {
      "op": "SHL"
    },
    "1692": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1694": {
      "op": "DUP3"
    },
    "1695": {
      "op": "ADD"
    },
    "1696": {
      "op": "MSTORE"
    },
    "1697": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "1699": {
      "op": "ADD"
    },
    "1700": {
      "fn": "ERC721._requireMinted",
      "offset": [
        13539,
        13592
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x3A7"
    },
    "1703": {
      "op": "JUMP"
    },
    "1704": {
      "fn": "ERC721._requireMinted",
      "offset": [
        13539,
        13592
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1705": {
      "fn": "ERC721._requireMinted",
      "offset": [
        13466,
        13599
      ],
      "op": "POP",
      "path": "16"
    },
    "1706": {
      "fn": "ERC721._requireMinted",
      "jump": "o",
      "offset": [
        13466,
        13599
      ],
      "op": "JUMP",
      "path": "16"
    },
    "1707": {
      "fn": "ERC721._approve",
      "offset": [
        12768,
        12939
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1708": {
      "fn": "ERC721._approve",
      "offset": [
        12842,
        12866
      ],
      "op": "PUSH1",
      "path": "16",
      "statement": 25,
      "value": "0x0"
    },
    "1710": {
      "fn": "ERC721._approve",
      "offset": [
        12842,
        12866
      ],
      "op": "DUP2",
      "path": "16"
    },
    "1711": {
      "fn": "ERC721._approve",
      "offset": [
        12842,
        12866
      ],
      "op": "DUP2",
      "path": "16"
    },
    "1712": {
      "fn": "ERC721._approve",
      "offset": [
        12842,
        12866
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "1713": {
      "fn": "ERC721._approve",
      "offset": [
        12842,
        12857
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "1715": {
      "fn": "ERC721._approve",
      "offset": [
        12842,
        12866
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x20"
    },
    "1717": {
      "fn": "ERC721._approve",
      "offset": [
        12842,
        12866
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "1718": {
      "fn": "ERC721._approve",
      "offset": [
        12842,
        12866
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "1720": {
      "fn": "ERC721._approve",
      "offset": [
        12842,
        12866
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "1721": {
      "fn": "ERC721._approve",
      "offset": [
        12842,
        12866
      ],
      "op": "KECCAK256",
      "path": "16"
    },
    "1722": {
      "fn": "ERC721._approve",
      "offset": [
        12842,
        12871
      ],
      "op": "DUP1",
      "path": "16"
    },
    "1723": {
      "fn": "ERC721._approve",
      "offset": [
        12842,
        12871
      ],
      "op": "SLOAD",
      "path": "16"
    },
    "1724": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1726": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1728": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1730": {
      "op": "SHL"
    },
    "1731": {
      "op": "SUB"
    },
    "1732": {
      "op": "NOT"
    },
    "1733": {
      "fn": "ERC721._approve",
      "offset": [
        12842,
        12871
      ],
      "op": "AND",
      "path": "16"
    },
    "1734": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1736": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1738": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1740": {
      "op": "SHL"
    },
    "1741": {
      "op": "SUB"
    },
    "1742": {
      "fn": "ERC721._approve",
      "offset": [
        12842,
        12871
      ],
      "op": "DUP5",
      "path": "16"
    },
    "1743": {
      "fn": "ERC721._approve",
      "offset": [
        12842,
        12871
      ],
      "op": "AND",
      "path": "16"
    },
    "1744": {
      "fn": "ERC721._approve",
      "offset": [
        12842,
        12871
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "1745": {
      "fn": "ERC721._approve",
      "offset": [
        12842,
        12871
      ],
      "op": "DUP2",
      "path": "16"
    },
    "1746": {
      "fn": "ERC721._approve",
      "offset": [
        12842,
        12871
      ],
      "op": "OR",
      "path": "16"
    },
    "1747": {
      "fn": "ERC721._approve",
      "offset": [
        12842,
        12871
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "1748": {
      "fn": "ERC721._approve",
      "offset": [
        12842,
        12871
      ],
      "op": "SWAP2",
      "path": "16"
    },
    "1749": {
      "fn": "ERC721._approve",
      "offset": [
        12842,
        12871
      ],
      "op": "SSTORE",
      "path": "16"
    },
    "1750": {
      "fn": "ERC721._approve",
      "offset": [
        12842,
        12866
      ],
      "op": "DUP2",
      "path": "16"
    },
    "1751": {
      "fn": "ERC721._approve",
      "offset": [
        12842,
        12866
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "1752": {
      "fn": "ERC721._approve",
      "offset": [
        12895,
        12918
      ],
      "op": "PUSH2",
      "path": "16",
      "statement": 26,
      "value": "0x6E0"
    },
    "1755": {
      "fn": "ERC721._approve",
      "offset": [
        12842,
        12866
      ],
      "op": "DUP3",
      "path": "16"
    },
    "1756": {
      "fn": "ERC721._approve",
      "offset": [
        12895,
        12909
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x499"
    },
    "1759": {
      "fn": "ERC721._approve",
      "jump": "i",
      "offset": [
        12895,
        12918
      ],
      "op": "JUMP",
      "path": "16"
    },
    "1760": {
      "fn": "ERC721._approve",
      "offset": [
        12895,
        12918
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1761": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1763": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1765": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1767": {
      "op": "SHL"
    },
    "1768": {
      "op": "SUB"
    },
    "1769": {
      "fn": "ERC721._approve",
      "offset": [
        12886,
        12932
      ],
      "op": "AND",
      "path": "16"
    },
    "1770": {
      "fn": "ERC721._approve",
      "offset": [
        12886,
        12932
      ],
      "op": "PUSH32",
      "path": "16",
      "value": "0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925"
    },
    "1803": {
      "fn": "ERC721._approve",
      "offset": [
        12886,
        12932
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "1805": {
      "fn": "ERC721._approve",
      "offset": [
        12886,
        12932
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "1806": {
      "fn": "ERC721._approve",
      "offset": [
        12886,
        12932
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "1808": {
      "fn": "ERC721._approve",
      "offset": [
        12886,
        12932
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "1809": {
      "fn": "ERC721._approve",
      "offset": [
        12886,
        12932
      ],
      "op": "DUP1",
      "path": "16"
    },
    "1810": {
      "fn": "ERC721._approve",
      "offset": [
        12886,
        12932
      ],
      "op": "SWAP2",
      "path": "16"
    },
    "1811": {
      "fn": "ERC721._approve",
      "offset": [
        12886,
        12932
      ],
      "op": "SUB",
      "path": "16"
    },
    "1812": {
      "fn": "ERC721._approve",
      "offset": [
        12886,
        12932
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "1813": {
      "fn": "ERC721._approve",
      "offset": [
        12886,
        12932
      ],
      "op": "LOG4",
      "path": "16"
    },
    "1814": {
      "fn": "ERC721._approve",
      "offset": [
        12768,
        12939
      ],
      "op": "POP",
      "path": "16"
    },
    "1815": {
      "fn": "ERC721._approve",
      "offset": [
        12768,
        12939
      ],
      "op": "POP",
      "path": "16"
    },
    "1816": {
      "fn": "ERC721._approve",
      "jump": "o",
      "offset": [
        12768,
        12939
      ],
      "op": "JUMP",
      "path": "16"
    },
    "1817": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7540,
        7801
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1818": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7633,
        7637
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x0"
    },
    "1820": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7649,
        7662
      ],
      "op": "DUP1",
      "path": "16"
    },
    "1821": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7665,
        7688
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x725"
    },
    "1824": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7680,
        7687
      ],
      "op": "DUP4",
      "path": "16"
    },
    "1825": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7665,
        7679
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x499"
    },
    "1828": {
      "fn": "ERC721._isApprovedOrOwner",
      "jump": "i",
      "offset": [
        7665,
        7688
      ],
      "op": "JUMP",
      "path": "16"
    },
    "1829": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7665,
        7688
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1830": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7649,
        7688
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "1831": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7649,
        7688
      ],
      "op": "POP",
      "path": "16"
    },
    "1832": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7717,
        7722
      ],
      "op": "DUP1",
      "path": "16",
      "statement": 27
    },
    "1833": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1835": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1837": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1839": {
      "op": "SHL"
    },
    "1840": {
      "op": "SUB"
    },
    "1841": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7706,
        7722
      ],
      "op": "AND",
      "path": "16"
    },
    "1842": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7706,
        7713
      ],
      "op": "DUP5",
      "path": "16"
    },
    "1843": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1845": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1847": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1849": {
      "op": "SHL"
    },
    "1850": {
      "op": "SUB"
    },
    "1851": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7706,
        7722
      ],
      "op": "AND",
      "path": "16"
    },
    "1852": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7706,
        7722
      ],
      "op": "EQ",
      "path": "16"
    },
    "1853": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7706,
        7758
      ],
      "op": "DUP1",
      "path": "16"
    },
    "1854": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7706,
        7758
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x76C"
    },
    "1857": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7706,
        7758
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "1858": {
      "op": "POP"
    },
    "1859": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1861": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1863": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1865": {
      "op": "SHL"
    },
    "1866": {
      "op": "SUB"
    },
    "1867": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "DUP1",
      "path": "16"
    },
    "1868": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "DUP3",
      "path": "16"
    },
    "1869": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "AND",
      "path": "16"
    },
    "1870": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4485,
        4489
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x0"
    },
    "1872": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "1873": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "DUP2",
      "path": "16"
    },
    "1874": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "1875": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4526
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x5"
    },
    "1877": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x20"
    },
    "1879": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "1880": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "DUP2",
      "path": "16"
    },
    "1881": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "1882": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "1884": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "DUP1",
      "path": "16"
    },
    "1885": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "DUP4",
      "path": "16"
    },
    "1886": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "KECCAK256",
      "path": "16"
    },
    "1887": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "SWAP4",
      "path": "16"
    },
    "1888": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "DUP9",
      "path": "16"
    },
    "1889": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "AND",
      "path": "16"
    },
    "1890": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "DUP4",
      "path": "16"
    },
    "1891": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "1892": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "SWAP3",
      "path": "16"
    },
    "1893": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "1894": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "1895": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "KECCAK256",
      "path": "16"
    },
    "1896": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "SLOAD",
      "path": "16"
    },
    "1897": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0xFF"
    },
    "1899": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "AND",
      "path": "16"
    },
    "1900": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7726,
        7758
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1901": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7706,
        7793
      ],
      "op": "DUP1",
      "path": "16"
    },
    "1902": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7706,
        7793
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x790"
    },
    "1905": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7706,
        7793
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "1906": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7706,
        7793
      ],
      "op": "POP",
      "path": "16"
    },
    "1907": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7786,
        7793
      ],
      "op": "DUP4",
      "path": "16"
    },
    "1908": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1910": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1912": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1914": {
      "op": "SHL"
    },
    "1915": {
      "op": "SUB"
    },
    "1916": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7762,
        7793
      ],
      "op": "AND",
      "path": "16"
    },
    "1917": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7762,
        7782
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x785"
    },
    "1920": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7774,
        7781
      ],
      "op": "DUP5",
      "path": "16"
    },
    "1921": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7762,
        7773
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x30C"
    },
    "1924": {
      "fn": "ERC721._isApprovedOrOwner",
      "jump": "i",
      "offset": [
        7762,
        7782
      ],
      "op": "JUMP",
      "path": "16"
    },
    "1925": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7762,
        7782
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1926": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1928": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1930": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1932": {
      "op": "SHL"
    },
    "1933": {
      "op": "SUB"
    },
    "1934": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7762,
        7793
      ],
      "op": "AND",
      "path": "16"
    },
    "1935": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7762,
        7793
      ],
      "op": "EQ",
      "path": "16"
    },
    "1936": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7706,
        7793
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1937": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7698,
        7794
      ],
      "op": "SWAP5",
      "path": "16"
    },
    "1938": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7540,
        7801
      ],
      "op": "SWAP4",
      "path": "16"
    },
    "1939": {
      "op": "POP"
    },
    "1940": {
      "op": "POP"
    },
    "1941": {
      "op": "POP"
    },
    "1942": {
      "op": "POP"
    },
    "1943": {
      "fn": "ERC721._isApprovedOrOwner",
      "jump": "o",
      "offset": [
        7540,
        7801
      ],
      "op": "JUMP",
      "path": "16"
    },
    "1944": {
      "fn": "ERC721._transfer",
      "offset": [
        11423,
        12656
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1945": {
      "fn": "ERC721._transfer",
      "offset": [
        11577,
        11581
      ],
      "op": "DUP3",
      "path": "16",
      "statement": 28
    },
    "1946": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1948": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1950": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1952": {
      "op": "SHL"
    },
    "1953": {
      "op": "SUB"
    },
    "1954": {
      "fn": "ERC721._transfer",
      "offset": [
        11550,
        11581
      ],
      "op": "AND",
      "path": "16"
    },
    "1955": {
      "fn": "ERC721._transfer",
      "offset": [
        11550,
        11573
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x7AB"
    },
    "1958": {
      "fn": "ERC721._transfer",
      "offset": [
        11565,
        11572
      ],
      "op": "DUP3",
      "path": "16"
    },
    "1959": {
      "fn": "ERC721._transfer",
      "offset": [
        11550,
        11564
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x499"
    },
    "1962": {
      "fn": "ERC721._transfer",
      "jump": "i",
      "offset": [
        11550,
        11573
      ],
      "op": "JUMP",
      "path": "16"
    },
    "1963": {
      "fn": "ERC721._transfer",
      "offset": [
        11550,
        11573
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "1964": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1966": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1968": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1970": {
      "op": "SHL"
    },
    "1971": {
      "op": "SUB"
    },
    "1972": {
      "fn": "ERC721._transfer",
      "offset": [
        11550,
        11581
      ],
      "op": "AND",
      "path": "16"
    },
    "1973": {
      "branch": 69,
      "fn": "ERC721._transfer",
      "offset": [
        11550,
        11581
      ],
      "op": "EQ",
      "path": "16"
    },
    "1974": {
      "fn": "ERC721._transfer",
      "offset": [
        11542,
        11623
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x7D1"
    },
    "1977": {
      "branch": 69,
      "fn": "ERC721._transfer",
      "offset": [
        11542,
        11623
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "1978": {
      "fn": "ERC721._transfer",
      "offset": [
        11542,
        11623
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "1980": {
      "fn": "ERC721._transfer",
      "offset": [
        11542,
        11623
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "1981": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1985": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1987": {
      "op": "SHL"
    },
    "1988": {
      "fn": "ERC721._transfer",
      "offset": [
        11542,
        11623
      ],
      "op": "DUP2",
      "path": "16"
    },
    "1989": {
      "fn": "ERC721._transfer",
      "offset": [
        11542,
        11623
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "1990": {
      "fn": "ERC721._transfer",
      "offset": [
        11542,
        11623
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "1992": {
      "fn": "ERC721._transfer",
      "offset": [
        11542,
        11623
      ],
      "op": "ADD",
      "path": "16"
    },
    "1993": {
      "fn": "ERC721._transfer",
      "offset": [
        11542,
        11623
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x3A7"
    },
    "1996": {
      "fn": "ERC721._transfer",
      "offset": [
        11542,
        11623
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "1997": {
      "fn": "ERC721._transfer",
      "offset": [
        11542,
        11623
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xFCC"
    },
    "2000": {
      "fn": "ERC721._transfer",
      "jump": "i",
      "offset": [
        11542,
        11623
      ],
      "op": "JUMP",
      "path": "16"
    },
    "2001": {
      "fn": "ERC721._transfer",
      "offset": [
        11542,
        11623
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "2002": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2004": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2006": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2008": {
      "op": "SHL"
    },
    "2009": {
      "op": "SUB"
    },
    "2010": {
      "fn": "ERC721._transfer",
      "offset": [
        11641,
        11657
      ],
      "op": "DUP3",
      "path": "16",
      "statement": 29
    },
    "2011": {
      "branch": 70,
      "fn": "ERC721._transfer",
      "offset": [
        11641,
        11657
      ],
      "op": "AND",
      "path": "16"
    },
    "2012": {
      "fn": "ERC721._transfer",
      "offset": [
        11633,
        11698
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x833"
    },
    "2015": {
      "branch": 70,
      "fn": "ERC721._transfer",
      "offset": [
        11633,
        11698
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "2016": {
      "fn": "ERC721._transfer",
      "offset": [
        11633,
        11698
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "2018": {
      "fn": "ERC721._transfer",
      "offset": [
        11633,
        11698
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "2019": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "2023": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "2025": {
      "op": "SHL"
    },
    "2026": {
      "fn": "ERC721._transfer",
      "offset": [
        11633,
        11698
      ],
      "op": "DUP2",
      "path": "16"
    },
    "2027": {
      "fn": "ERC721._transfer",
      "offset": [
        11633,
        11698
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "2028": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "2030": {
      "fn": "ERC721._transfer",
      "offset": [
        11633,
        11698
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "2032": {
      "fn": "ERC721._transfer",
      "offset": [
        11633,
        11698
      ],
      "op": "DUP3",
      "path": "16"
    },
    "2033": {
      "fn": "ERC721._transfer",
      "offset": [
        11633,
        11698
      ],
      "op": "ADD",
      "path": "16"
    },
    "2034": {
      "op": "MSTORE"
    },
    "2035": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "2037": {
      "op": "DUP1"
    },
    "2038": {
      "op": "DUP3"
    },
    "2039": {
      "op": "ADD"
    },
    "2040": {
      "op": "MSTORE"
    },
    "2041": {
      "op": "PUSH32",
      "value": "0x4552433732313A207472616E7366657220746F20746865207A65726F20616464"
    },
    "2074": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "2076": {
      "op": "DUP3"
    },
    "2077": {
      "op": "ADD"
    },
    "2078": {
      "op": "MSTORE"
    },
    "2079": {
      "op": "PUSH4",
      "value": "0x72657373"
    },
    "2084": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "2086": {
      "op": "SHL"
    },
    "2087": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "2089": {
      "op": "DUP3"
    },
    "2090": {
      "op": "ADD"
    },
    "2091": {
      "op": "MSTORE"
    },
    "2092": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "2094": {
      "op": "ADD"
    },
    "2095": {
      "fn": "ERC721._transfer",
      "offset": [
        11633,
        11698
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x3A7"
    },
    "2098": {
      "op": "JUMP"
    },
    "2099": {
      "fn": "ERC721._transfer",
      "offset": [
        11633,
        11698
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "2100": {
      "fn": "ERC721._transfer",
      "offset": [
        11878,
        11882
      ],
      "op": "DUP3",
      "path": "16",
      "statement": 30
    },
    "2101": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2103": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2105": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2107": {
      "op": "SHL"
    },
    "2108": {
      "op": "SUB"
    },
    "2109": {
      "fn": "ERC721._transfer",
      "offset": [
        11851,
        11882
      ],
      "op": "AND",
      "path": "16"
    },
    "2110": {
      "fn": "ERC721._transfer",
      "offset": [
        11851,
        11874
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x846"
    },
    "2113": {
      "fn": "ERC721._transfer",
      "offset": [
        11866,
        11873
      ],
      "op": "DUP3",
      "path": "16"
    },
    "2114": {
      "fn": "ERC721._transfer",
      "offset": [
        11851,
        11865
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x499"
    },
    "2117": {
      "fn": "ERC721._transfer",
      "jump": "i",
      "offset": [
        11851,
        11874
      ],
      "op": "JUMP",
      "path": "16"
    },
    "2118": {
      "fn": "ERC721._transfer",
      "offset": [
        11851,
        11874
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "2119": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2121": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2123": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2125": {
      "op": "SHL"
    },
    "2126": {
      "op": "SUB"
    },
    "2127": {
      "fn": "ERC721._transfer",
      "offset": [
        11851,
        11882
      ],
      "op": "AND",
      "path": "16"
    },
    "2128": {
      "branch": 71,
      "fn": "ERC721._transfer",
      "offset": [
        11851,
        11882
      ],
      "op": "EQ",
      "path": "16"
    },
    "2129": {
      "fn": "ERC721._transfer",
      "offset": [
        11843,
        11924
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x86C"
    },
    "2132": {
      "branch": 71,
      "fn": "ERC721._transfer",
      "offset": [
        11843,
        11924
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "2133": {
      "fn": "ERC721._transfer",
      "offset": [
        11843,
        11924
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "2135": {
      "fn": "ERC721._transfer",
      "offset": [
        11843,
        11924
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "2136": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "2140": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "2142": {
      "op": "SHL"
    },
    "2143": {
      "fn": "ERC721._transfer",
      "offset": [
        11843,
        11924
      ],
      "op": "DUP2",
      "path": "16"
    },
    "2144": {
      "fn": "ERC721._transfer",
      "offset": [
        11843,
        11924
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "2145": {
      "fn": "ERC721._transfer",
      "offset": [
        11843,
        11924
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "2147": {
      "fn": "ERC721._transfer",
      "offset": [
        11843,
        11924
      ],
      "op": "ADD",
      "path": "16"
    },
    "2148": {
      "fn": "ERC721._transfer",
      "offset": [
        11843,
        11924
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x3A7"
    },
    "2151": {
      "fn": "ERC721._transfer",
      "offset": [
        11843,
        11924
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "2152": {
      "fn": "ERC721._transfer",
      "offset": [
        11843,
        11924
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xFCC"
    },
    "2155": {
      "fn": "ERC721._transfer",
      "jump": "i",
      "offset": [
        11843,
        11924
      ],
      "op": "JUMP",
      "path": "16"
    },
    "2156": {
      "fn": "ERC721._transfer",
      "offset": [
        11843,
        11924
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "2157": {
      "fn": "ERC721._transfer",
      "offset": [
        11993,
        12017
      ],
      "op": "PUSH1",
      "path": "16",
      "statement": 31,
      "value": "0x0"
    },
    "2159": {
      "fn": "ERC721._transfer",
      "offset": [
        11993,
        12017
      ],
      "op": "DUP2",
      "path": "16"
    },
    "2160": {
      "fn": "ERC721._transfer",
      "offset": [
        11993,
        12017
      ],
      "op": "DUP2",
      "path": "16"
    },
    "2161": {
      "fn": "ERC721._transfer",
      "offset": [
        11993,
        12017
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "2162": {
      "fn": "ERC721._transfer",
      "offset": [
        11993,
        12008
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "2164": {
      "fn": "ERC721._transfer",
      "offset": [
        11993,
        12017
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x20"
    },
    "2166": {
      "fn": "ERC721._transfer",
      "offset": [
        11993,
        12017
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "2167": {
      "fn": "ERC721._transfer",
      "offset": [
        11993,
        12017
      ],
      "op": "DUP2",
      "path": "16"
    },
    "2168": {
      "fn": "ERC721._transfer",
      "offset": [
        11993,
        12017
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "2169": {
      "fn": "ERC721._transfer",
      "offset": [
        11993,
        12017
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "2171": {
      "fn": "ERC721._transfer",
      "offset": [
        11993,
        12017
      ],
      "op": "DUP1",
      "path": "16"
    },
    "2172": {
      "fn": "ERC721._transfer",
      "offset": [
        11993,
        12017
      ],
      "op": "DUP4",
      "path": "16"
    },
    "2173": {
      "fn": "ERC721._transfer",
      "offset": [
        11993,
        12017
      ],
      "op": "KECCAK256",
      "path": "16"
    },
    "2174": {
      "fn": "ERC721._transfer",
      "offset": [
        11986,
        12017
      ],
      "op": "DUP1",
      "path": "16"
    },
    "2175": {
      "fn": "ERC721._transfer",
      "offset": [
        11986,
        12017
      ],
      "op": "SLOAD",
      "path": "16"
    },
    "2176": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2178": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2180": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2182": {
      "op": "SHL"
    },
    "2183": {
      "op": "SUB"
    },
    "2184": {
      "op": "NOT"
    },
    "2185": {
      "fn": "ERC721._transfer",
      "offset": [
        11986,
        12017
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "2186": {
      "fn": "ERC721._transfer",
      "offset": [
        11986,
        12017
      ],
      "op": "DUP2",
      "path": "16"
    },
    "2187": {
      "fn": "ERC721._transfer",
      "offset": [
        11986,
        12017
      ],
      "op": "AND",
      "path": "16"
    },
    "2188": {
      "fn": "ERC721._transfer",
      "offset": [
        11986,
        12017
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "2189": {
      "fn": "ERC721._transfer",
      "offset": [
        11986,
        12017
      ],
      "op": "SWAP2",
      "path": "16"
    },
    "2190": {
      "fn": "ERC721._transfer",
      "offset": [
        11986,
        12017
      ],
      "op": "SSTORE",
      "path": "16"
    },
    "2191": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2193": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2195": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2197": {
      "op": "SHL"
    },
    "2198": {
      "op": "SUB"
    },
    "2199": {
      "fn": "ERC721._transfer",
      "offset": [
        12461,
        12476
      ],
      "op": "DUP8",
      "path": "16",
      "statement": 32
    },
    "2200": {
      "fn": "ERC721._transfer",
      "offset": [
        12461,
        12476
      ],
      "op": "DUP2",
      "path": "16"
    },
    "2201": {
      "fn": "ERC721._transfer",
      "offset": [
        12461,
        12476
      ],
      "op": "AND",
      "path": "16"
    },
    "2202": {
      "fn": "ERC721._transfer",
      "offset": [
        12461,
        12476
      ],
      "op": "DUP1",
      "path": "16"
    },
    "2203": {
      "fn": "ERC721._transfer",
      "offset": [
        12461,
        12476
      ],
      "op": "DUP7",
      "path": "16"
    },
    "2204": {
      "fn": "ERC721._transfer",
      "offset": [
        12461,
        12476
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "2205": {
      "fn": "ERC721._transfer",
      "offset": [
        12461,
        12470
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x3"
    },
    "2207": {
      "fn": "ERC721._transfer",
      "offset": [
        12461,
        12476
      ],
      "op": "DUP6",
      "path": "16"
    },
    "2208": {
      "fn": "ERC721._transfer",
      "offset": [
        12461,
        12476
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "2209": {
      "fn": "ERC721._transfer",
      "offset": [
        12461,
        12476
      ],
      "op": "DUP4",
      "path": "16"
    },
    "2210": {
      "fn": "ERC721._transfer",
      "offset": [
        12461,
        12476
      ],
      "op": "DUP7",
      "path": "16"
    },
    "2211": {
      "fn": "ERC721._transfer",
      "offset": [
        12461,
        12476
      ],
      "op": "KECCAK256",
      "path": "16"
    },
    "2212": {
      "fn": "ERC721._transfer",
      "offset": [
        12461,
        12481
      ],
      "op": "DUP1",
      "path": "16"
    },
    "2213": {
      "fn": "ERC721._transfer",
      "offset": [
        12461,
        12481
      ],
      "op": "SLOAD",
      "path": "16"
    },
    "2214": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2216": {
      "op": "NOT"
    },
    "2217": {
      "fn": "ERC721._transfer",
      "offset": [
        12461,
        12481
      ],
      "op": "ADD",
      "path": "16"
    },
    "2218": {
      "fn": "ERC721._transfer",
      "offset": [
        12461,
        12481
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "2219": {
      "fn": "ERC721._transfer",
      "offset": [
        12461,
        12481
      ],
      "op": "SSTORE",
      "path": "16"
    },
    "2220": {
      "fn": "ERC721._transfer",
      "offset": [
        12495,
        12508
      ],
      "op": "SWAP1",
      "path": "16",
      "statement": 33
    },
    "2221": {
      "fn": "ERC721._transfer",
      "offset": [
        12495,
        12508
      ],
      "op": "DUP8",
      "path": "16"
    },
    "2222": {
      "fn": "ERC721._transfer",
      "offset": [
        12495,
        12508
      ],
      "op": "AND",
      "path": "16"
    },
    "2223": {
      "fn": "ERC721._transfer",
      "offset": [
        12495,
        12508
      ],
      "op": "DUP1",
      "path": "16"
    },
    "2224": {
      "fn": "ERC721._transfer",
      "offset": [
        12495,
        12508
      ],
      "op": "DUP7",
      "path": "16"
    },
    "2225": {
      "fn": "ERC721._transfer",
      "offset": [
        12495,
        12508
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "2226": {
      "fn": "ERC721._transfer",
      "offset": [
        12495,
        12508
      ],
      "op": "DUP4",
      "path": "16"
    },
    "2227": {
      "fn": "ERC721._transfer",
      "offset": [
        12495,
        12508
      ],
      "op": "DUP7",
      "path": "16"
    },
    "2228": {
      "fn": "ERC721._transfer",
      "offset": [
        12495,
        12508
      ],
      "op": "KECCAK256",
      "path": "16"
    },
    "2229": {
      "fn": "ERC721._transfer",
      "offset": [
        12495,
        12513
      ],
      "op": "DUP1",
      "path": "16"
    },
    "2230": {
      "fn": "ERC721._transfer",
      "offset": [
        12495,
        12513
      ],
      "op": "SLOAD",
      "path": "16"
    },
    "2231": {
      "fn": "ERC721._transfer",
      "offset": [
        11986,
        12017
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x1"
    },
    "2233": {
      "fn": "ERC721._transfer",
      "offset": [
        12495,
        12513
      ],
      "op": "ADD",
      "path": "16"
    },
    "2234": {
      "fn": "ERC721._transfer",
      "offset": [
        12495,
        12513
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "2235": {
      "fn": "ERC721._transfer",
      "offset": [
        12495,
        12513
      ],
      "op": "SSTORE",
      "path": "16"
    },
    "2236": {
      "fn": "ERC721._transfer",
      "offset": [
        12533,
        12549
      ],
      "op": "DUP7",
      "path": "16",
      "statement": 34
    },
    "2237": {
      "fn": "ERC721._transfer",
      "offset": [
        12533,
        12549
      ],
      "op": "DUP7",
      "path": "16"
    },
    "2238": {
      "fn": "ERC721._transfer",
      "offset": [
        12533,
        12549
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "2239": {
      "fn": "ERC721._transfer",
      "offset": [
        12533,
        12540
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x2"
    },
    "2241": {
      "fn": "ERC721._transfer",
      "offset": [
        12533,
        12549
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "2242": {
      "fn": "ERC721._transfer",
      "offset": [
        12533,
        12549
      ],
      "op": "SWAP5",
      "path": "16"
    },
    "2243": {
      "fn": "ERC721._transfer",
      "offset": [
        12533,
        12549
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "2244": {
      "fn": "ERC721._transfer",
      "offset": [
        12533,
        12549
      ],
      "op": "DUP3",
      "path": "16"
    },
    "2245": {
      "fn": "ERC721._transfer",
      "offset": [
        12533,
        12549
      ],
      "op": "DUP6",
      "path": "16"
    },
    "2246": {
      "fn": "ERC721._transfer",
      "offset": [
        12533,
        12549
      ],
      "op": "KECCAK256",
      "path": "16"
    },
    "2247": {
      "fn": "ERC721._transfer",
      "offset": [
        12533,
        12554
      ],
      "op": "DUP1",
      "path": "16"
    },
    "2248": {
      "fn": "ERC721._transfer",
      "offset": [
        12533,
        12554
      ],
      "op": "SLOAD",
      "path": "16"
    },
    "2249": {
      "fn": "ERC721._transfer",
      "offset": [
        12533,
        12554
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "2250": {
      "fn": "ERC721._transfer",
      "offset": [
        12533,
        12554
      ],
      "op": "SWAP3",
      "path": "16"
    },
    "2251": {
      "fn": "ERC721._transfer",
      "offset": [
        12533,
        12554
      ],
      "op": "AND",
      "path": "16"
    },
    "2252": {
      "fn": "ERC721._transfer",
      "offset": [
        12533,
        12554
      ],
      "op": "DUP5",
      "path": "16"
    },
    "2253": {
      "fn": "ERC721._transfer",
      "offset": [
        12533,
        12554
      ],
      "op": "OR",
      "path": "16"
    },
    "2254": {
      "fn": "ERC721._transfer",
      "offset": [
        12533,
        12554
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "2255": {
      "fn": "ERC721._transfer",
      "offset": [
        12533,
        12554
      ],
      "op": "SWAP2",
      "path": "16"
    },
    "2256": {
      "fn": "ERC721._transfer",
      "offset": [
        12533,
        12554
      ],
      "op": "SSTORE",
      "path": "16"
    },
    "2257": {
      "fn": "ERC721._transfer",
      "offset": [
        12570,
        12597
      ],
      "op": "SWAP1",
      "path": "16",
      "statement": 35
    },
    "2258": {
      "fn": "ERC721._transfer",
      "offset": [
        12570,
        12597
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "2259": {
      "fn": "ERC721._transfer",
      "offset": [
        12009,
        12016
      ],
      "op": "DUP5",
      "path": "16"
    },
    "2260": {
      "fn": "ERC721._transfer",
      "offset": [
        12009,
        12016
      ],
      "op": "SWAP4",
      "path": "16"
    },
    "2261": {
      "fn": "ERC721._transfer",
      "offset": [
        12570,
        12597
      ],
      "op": "PUSH32",
      "path": "16",
      "value": "0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF"
    },
    "2294": {
      "fn": "ERC721._transfer",
      "offset": [
        12570,
        12597
      ],
      "op": "SWAP2",
      "path": "16"
    },
    "2295": {
      "fn": "ERC721._transfer",
      "offset": [
        12570,
        12597
      ],
      "op": "LOG4",
      "path": "16"
    },
    "2296": {
      "fn": "ERC721.approve",
      "offset": [
        3538,
        3874
      ],
      "op": "POP",
      "path": "16"
    },
    "2297": {
      "fn": "ERC721.approve",
      "offset": [
        3468,
        3874
      ],
      "op": "POP",
      "path": "16"
    },
    "2298": {
      "fn": "ERC721.approve",
      "offset": [
        3468,
        3874
      ],
      "op": "POP",
      "path": "16"
    },
    "2299": {
      "fn": "ERC721.approve",
      "jump": "o",
      "offset": [
        3468,
        3874
      ],
      "op": "JUMP",
      "path": "16"
    },
    "2300": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13075,
        13382
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "2301": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13225,
        13233
      ],
      "op": "DUP2",
      "path": "16",
      "statement": 36
    },
    "2302": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2304": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2306": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2308": {
      "op": "SHL"
    },
    "2309": {
      "op": "SUB"
    },
    "2310": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13216,
        13233
      ],
      "op": "AND",
      "path": "16"
    },
    "2311": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13216,
        13221
      ],
      "op": "DUP4",
      "path": "16"
    },
    "2312": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2314": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2316": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2318": {
      "op": "SHL"
    },
    "2319": {
      "op": "SUB"
    },
    "2320": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13216,
        13233
      ],
      "op": "AND",
      "path": "16"
    },
    "2321": {
      "branch": 72,
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13216,
        13233
      ],
      "op": "SUB",
      "path": "16"
    },
    "2322": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13208,
        13263
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x95D"
    },
    "2325": {
      "branch": 72,
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13208,
        13263
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "2326": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13208,
        13263
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "2328": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13208,
        13263
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "2329": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "2333": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "2335": {
      "op": "SHL"
    },
    "2336": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13208,
        13263
      ],
      "op": "DUP2",
      "path": "16"
    },
    "2337": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13208,
        13263
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "2338": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "2340": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13208,
        13263
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "2342": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13208,
        13263
      ],
      "op": "DUP3",
      "path": "16"
    },
    "2343": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13208,
        13263
      ],
      "op": "ADD",
      "path": "16"
    },
    "2344": {
      "op": "MSTORE"
    },
    "2345": {
      "op": "PUSH1",
      "value": "0x19"
    },
    "2347": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "2349": {
      "op": "DUP3"
    },
    "2350": {
      "op": "ADD"
    },
    "2351": {
      "op": "MSTORE"
    },
    "2352": {
      "op": "PUSH32",
      "value": "0x4552433732313A20617070726F766520746F2063616C6C657200000000000000"
    },
    "2385": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "2387": {
      "op": "DUP3"
    },
    "2388": {
      "op": "ADD"
    },
    "2389": {
      "op": "MSTORE"
    },
    "2390": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "2392": {
      "op": "ADD"
    },
    "2393": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13208,
        13263
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x3A7"
    },
    "2396": {
      "op": "JUMP"
    },
    "2397": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13208,
        13263
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "2398": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2400": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2402": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2404": {
      "op": "SHL"
    },
    "2405": {
      "op": "SUB"
    },
    "2406": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13298
      ],
      "op": "DUP4",
      "path": "16",
      "statement": 37
    },
    "2407": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13298
      ],
      "op": "DUP2",
      "path": "16"
    },
    "2408": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13298
      ],
      "op": "AND",
      "path": "16"
    },
    "2409": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13298
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x0"
    },
    "2411": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13298
      ],
      "op": "DUP2",
      "path": "16"
    },
    "2412": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13298
      ],
      "op": "DUP2",
      "path": "16"
    },
    "2413": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13298
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "2414": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13291
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x5"
    },
    "2416": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13298
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x20"
    },
    "2418": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13298
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "2419": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13298
      ],
      "op": "DUP2",
      "path": "16"
    },
    "2420": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13298
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "2421": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13298
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "2423": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13298
      ],
      "op": "DUP1",
      "path": "16"
    },
    "2424": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13298
      ],
      "op": "DUP4",
      "path": "16"
    },
    "2425": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13298
      ],
      "op": "KECCAK256",
      "path": "16"
    },
    "2426": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13308
      ],
      "op": "SWAP5",
      "path": "16"
    },
    "2427": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13308
      ],
      "op": "DUP8",
      "path": "16"
    },
    "2428": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13308
      ],
      "op": "AND",
      "path": "16"
    },
    "2429": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13308
      ],
      "op": "DUP1",
      "path": "16"
    },
    "2430": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13308
      ],
      "op": "DUP5",
      "path": "16"
    },
    "2431": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13308
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "2432": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13308
      ],
      "op": "SWAP5",
      "path": "16"
    },
    "2433": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13308
      ],
      "op": "DUP3",
      "path": "16"
    },
    "2434": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13308
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "2435": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13308
      ],
      "op": "SWAP2",
      "path": "16"
    },
    "2436": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13308
      ],
      "op": "DUP3",
      "path": "16"
    },
    "2437": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13308
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "2438": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13308
      ],
      "op": "KECCAK256",
      "path": "16"
    },
    "2439": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13319
      ],
      "op": "DUP1",
      "path": "16"
    },
    "2440": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13319
      ],
      "op": "SLOAD",
      "path": "16"
    },
    "2441": {
      "op": "PUSH1",
      "value": "0xFF"
    },
    "2443": {
      "op": "NOT"
    },
    "2444": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13319
      ],
      "op": "AND",
      "path": "16"
    },
    "2445": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13319
      ],
      "op": "DUP7",
      "path": "16"
    },
    "2446": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13319
      ],
      "op": "ISZERO",
      "path": "16"
    },
    "2447": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13319
      ],
      "op": "ISZERO",
      "path": "16"
    },
    "2448": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13319
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "2449": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13319
      ],
      "op": "DUP2",
      "path": "16"
    },
    "2450": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13319
      ],
      "op": "OR",
      "path": "16"
    },
    "2451": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13319
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "2452": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13319
      ],
      "op": "SWAP2",
      "path": "16"
    },
    "2453": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13273,
        13319
      ],
      "op": "SSTORE",
      "path": "16"
    },
    "2454": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13334,
        13375
      ],
      "op": "SWAP2",
      "path": "16",
      "statement": 38
    },
    "2455": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13334,
        13375
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "2456": {
      "op": "SWAP2"
    },
    "2457": {
      "op": "DUP3"
    },
    "2458": {
      "op": "MSTORE"
    },
    "2459": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13334,
        13375
      ],
      "op": "PUSH32",
      "path": "16",
      "value": "0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31"
    },
    "2492": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13334,
        13375
      ],
      "op": "SWAP2",
      "path": "16"
    },
    "2493": {
      "op": "ADD"
    },
    "2494": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13334,
        13375
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "2496": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13334,
        13375
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "2497": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13334,
        13375
      ],
      "op": "DUP1",
      "path": "16"
    },
    "2498": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13334,
        13375
      ],
      "op": "SWAP2",
      "path": "16"
    },
    "2499": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13334,
        13375
      ],
      "op": "SUB",
      "path": "16"
    },
    "2500": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13334,
        13375
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "2501": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13334,
        13375
      ],
      "op": "LOG3",
      "path": "16"
    },
    "2502": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13075,
        13382
      ],
      "op": "POP",
      "path": "16"
    },
    "2503": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13075,
        13382
      ],
      "op": "POP",
      "path": "16"
    },
    "2504": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        13075,
        13382
      ],
      "op": "POP",
      "path": "16"
    },
    "2505": {
      "fn": "ERC721._setApprovalForAll",
      "jump": "o",
      "offset": [
        13075,
        13382
      ],
      "op": "JUMP",
      "path": "16"
    },
    "2506": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6424,
        6729
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "2507": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6574,
        6602
      ],
      "op": "PUSH2",
      "path": "16",
      "statement": 39,
      "value": "0x9D5"
    },
    "2510": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6584,
        6588
      ],
      "op": "DUP5",
      "path": "16"
    },
    "2511": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6590,
        6592
      ],
      "op": "DUP5",
      "path": "16"
    },
    "2512": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6594,
        6601
      ],
      "op": "DUP5",
      "path": "16"
    },
    "2513": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6574,
        6583
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x798"
    },
    "2516": {
      "fn": "ERC721._safeTransfer",
      "jump": "i",
      "offset": [
        6574,
        6602
      ],
      "op": "JUMP",
      "path": "16"
    },
    "2517": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6574,
        6602
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "2518": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6620,
        6667
      ],
      "op": "PUSH2",
      "path": "16",
      "statement": 40,
      "value": "0x9E1"
    },
    "2521": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6643,
        6647
      ],
      "op": "DUP5",
      "path": "16"
    },
    "2522": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6649,
        6651
      ],
      "op": "DUP5",
      "path": "16"
    },
    "2523": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6653,
        6660
      ],
      "op": "DUP5",
      "path": "16"
    },
    "2524": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6662,
        6666
      ],
      "op": "DUP5",
      "path": "16"
    },
    "2525": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6620,
        6642
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xA90"
    },
    "2528": {
      "fn": "ERC721._safeTransfer",
      "jump": "i",
      "offset": [
        6620,
        6667
      ],
      "op": "JUMP",
      "path": "16"
    },
    "2529": {
      "branch": 73,
      "fn": "ERC721._safeTransfer",
      "offset": [
        6620,
        6667
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "2530": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6612,
        6722
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x5CF"
    },
    "2533": {
      "branch": 73,
      "fn": "ERC721._safeTransfer",
      "offset": [
        6612,
        6722
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "2534": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6612,
        6722
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "2536": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6612,
        6722
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "2537": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "2541": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "2543": {
      "op": "SHL"
    },
    "2544": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6612,
        6722
      ],
      "op": "DUP2",
      "path": "16"
    },
    "2545": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6612,
        6722
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "2546": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6612,
        6722
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "2548": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6612,
        6722
      ],
      "op": "ADD",
      "path": "16"
    },
    "2549": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6612,
        6722
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x3A7"
    },
    "2552": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6612,
        6722
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "2553": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6612,
        6722
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x1011"
    },
    "2556": {
      "fn": "ERC721._safeTransfer",
      "jump": "i",
      "offset": [
        6612,
        6722
      ],
      "op": "JUMP",
      "path": "16"
    },
    "2557": {
      "fn": "Strings.toString",
      "offset": [
        415,
        1111
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "2558": {
      "fn": "Strings.toString",
      "offset": [
        471,
        484
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x60"
    },
    "2560": {
      "fn": "Strings.toString",
      "offset": [
        520,
        534
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "2562": {
      "fn": "Strings.toString",
      "offset": [
        537,
        554
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0xA0A"
    },
    "2565": {
      "fn": "Strings.toString",
      "offset": [
        548,
        553
      ],
      "op": "DUP4",
      "path": "25"
    },
    "2566": {
      "fn": "Strings.toString",
      "offset": [
        537,
        547
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0xB91"
    },
    "2569": {
      "fn": "Strings.toString",
      "jump": "i",
      "offset": [
        537,
        554
      ],
      "op": "JUMP",
      "path": "25"
    },
    "2570": {
      "fn": "Strings.toString",
      "offset": [
        537,
        554
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "2571": {
      "fn": "Strings.toString",
      "offset": [
        557,
        558
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x1"
    },
    "2573": {
      "fn": "Strings.toString",
      "offset": [
        537,
        558
      ],
      "op": "ADD",
      "path": "25"
    },
    "2574": {
      "fn": "Strings.toString",
      "offset": [
        520,
        558
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "2575": {
      "fn": "Strings.toString",
      "offset": [
        520,
        558
      ],
      "op": "POP",
      "path": "25"
    },
    "2576": {
      "fn": "Strings.toString",
      "offset": [
        572,
        592
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "2578": {
      "fn": "Strings.toString",
      "offset": [
        606,
        612
      ],
      "op": "DUP2",
      "path": "25"
    },
    "2579": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "PUSH8",
      "path": "25",
      "value": "0xFFFFFFFFFFFFFFFF"
    },
    "2588": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "DUP2",
      "path": "25"
    },
    "2589": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "GT",
      "path": "25"
    },
    "2590": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "ISZERO",
      "path": "25"
    },
    "2591": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0xA2A"
    },
    "2594": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "2595": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0xA2A"
    },
    "2598": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0xDF1"
    },
    "2601": {
      "fn": "Strings.toString",
      "jump": "i",
      "offset": [
        595,
        613
      ],
      "op": "JUMP",
      "path": "25"
    },
    "2602": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "2603": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "2605": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "MLOAD",
      "path": "25"
    },
    "2606": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "2607": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "DUP1",
      "path": "25"
    },
    "2608": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "DUP3",
      "path": "25"
    },
    "2609": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "2610": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "DUP1",
      "path": "25"
    },
    "2611": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x1F"
    },
    "2613": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "ADD",
      "path": "25"
    },
    "2614": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x1F"
    },
    "2616": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "NOT",
      "path": "25"
    },
    "2617": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "AND",
      "path": "25"
    },
    "2618": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "2620": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "ADD",
      "path": "25"
    },
    "2621": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "DUP3",
      "path": "25"
    },
    "2622": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "ADD",
      "path": "25"
    },
    "2623": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "2625": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "2626": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "DUP1",
      "path": "25"
    },
    "2627": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "ISZERO",
      "path": "25"
    },
    "2628": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0xA54"
    },
    "2631": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "2632": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "2634": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "DUP3",
      "path": "25"
    },
    "2635": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "ADD",
      "path": "25"
    },
    "2636": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "DUP2",
      "path": "25"
    },
    "2637": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "DUP1",
      "path": "25"
    },
    "2638": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "CALLDATASIZE",
      "path": "25"
    },
    "2639": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "DUP4",
      "path": "25"
    },
    "2640": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "CALLDATACOPY",
      "path": "25"
    },
    "2641": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "ADD",
      "path": "25"
    },
    "2642": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "2643": {
      "op": "POP"
    },
    "2644": {
      "fn": "Strings.toString",
      "offset": [
        595,
        613
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "2645": {
      "op": "POP"
    },
    "2646": {
      "fn": "Strings.toString",
      "offset": [
        572,
        613
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "2647": {
      "op": "POP"
    },
    "2648": {
      "fn": "Strings.toString",
      "offset": [
        733,
        761
      ],
      "op": "DUP2",
      "path": "25"
    },
    "2649": {
      "fn": "Strings.toString",
      "offset": [
        733,
        761
      ],
      "op": "DUP2",
      "path": "25"
    },
    "2650": {
      "fn": "Strings.toString",
      "offset": [
        733,
        761
      ],
      "op": "ADD",
      "path": "25"
    },
    "2651": {
      "fn": "Strings.toString",
      "offset": [
        749,
        751
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "2653": {
      "fn": "Strings.toString",
      "offset": [
        733,
        761
      ],
      "op": "ADD",
      "path": "25"
    },
    "2654": {
      "fn": "Strings.toString",
      "offset": [
        788,
        1068
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "2655": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2657": {
      "op": "NOT"
    },
    "2658": {
      "fn": "Strings.toString",
      "offset": [
        819,
        824
      ],
      "op": "ADD",
      "path": "25",
      "statement": 41
    },
    "2659": {
      "op": "PUSH16",
      "value": "0x181899199A1A9B1B9C1CB0B131B232B3"
    },
    "2676": {
      "op": "PUSH1",
      "value": "0x81"
    },
    "2678": {
      "op": "SHL"
    },
    "2679": {
      "fn": "Strings.toString",
      "offset": [
        953,
        955
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0xA"
    },
    "2681": {
      "fn": "Strings.toString",
      "offset": [
        942,
        956
      ],
      "op": "DUP7",
      "path": "25"
    },
    "2682": {
      "fn": "Strings.toString",
      "offset": [
        942,
        956
      ],
      "op": "MOD",
      "path": "25"
    },
    "2683": {
      "fn": "Strings.toString",
      "offset": [
        937,
        967
      ],
      "op": "BYTE",
      "path": "25"
    },
    "2684": {
      "fn": "Strings.toString",
      "offset": [
        819,
        824
      ],
      "op": "DUP2",
      "path": "25"
    },
    "2685": {
      "fn": "Strings.toString",
      "offset": [
        924,
        968
      ],
      "op": "MSTORE8",
      "path": "25"
    },
    "2686": {
      "fn": "Strings.toString",
      "offset": [
        1012,
        1014
      ],
      "op": "PUSH1",
      "path": "25",
      "statement": 42,
      "value": "0xA"
    },
    "2688": {
      "fn": "Strings.toString",
      "offset": [
        1003,
        1014
      ],
      "op": "DUP6",
      "path": "25"
    },
    "2689": {
      "fn": "Strings.toString",
      "offset": [
        1003,
        1014
      ],
      "op": "DIV",
      "path": "25"
    },
    "2690": {
      "fn": "Strings.toString",
      "offset": [
        1003,
        1014
      ],
      "op": "SWAP5",
      "path": "25"
    },
    "2691": {
      "op": "POP"
    },
    "2692": {
      "fn": "Strings.toString",
      "offset": [
        1032,
        1053
      ],
      "op": "DUP5",
      "path": "25"
    },
    "2693": {
      "fn": "Strings.toString",
      "offset": [
        788,
        1068
      ],
      "op": "PUSH2",
      "path": "25",
      "value": "0xA5E"
    },
    "2696": {
      "fn": "Strings.toString",
      "offset": [
        1032,
        1053
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "2697": {
      "op": "POP"
    },
    "2698": {
      "fn": "Strings.toString",
      "offset": [
        1088,
        1094
      ],
      "op": "SWAP4",
      "path": "25",
      "statement": 43
    },
    "2699": {
      "fn": "Strings.toString",
      "offset": [
        415,
        1111
      ],
      "op": "SWAP3",
      "path": "25"
    },
    "2700": {
      "op": "POP"
    },
    "2701": {
      "op": "POP"
    },
    "2702": {
      "op": "POP"
    },
    "2703": {
      "fn": "Strings.toString",
      "jump": "o",
      "offset": [
        415,
        1111
      ],
      "op": "JUMP",
      "path": "25"
    },
    "2704": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14151,
        14982
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "2705": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14300,
        14304
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x0"
    },
    "2707": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2709": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2711": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2713": {
      "op": "SHL"
    },
    "2714": {
      "op": "SUB"
    },
    "2715": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14320,
        14333
      ],
      "op": "DUP5",
      "path": "16"
    },
    "2716": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14320,
        14333
      ],
      "op": "AND",
      "path": "16"
    },
    "2717": {
      "fn": "Address.isContract",
      "offset": [
        1465,
        1484
      ],
      "op": "EXTCODESIZE",
      "path": "22",
      "statement": 44
    },
    "2718": {
      "fn": "Address.isContract",
      "offset": [
        1465,
        1488
      ],
      "op": "ISZERO",
      "path": "22"
    },
    "2719": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14316,
        14976
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xB86"
    },
    "2722": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14316,
        14976
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "2723": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "2725": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "2726": {
      "op": "PUSH4",
      "value": "0xA85BD01"
    },
    "2731": {
      "op": "PUSH1",
      "value": "0xE1"
    },
    "2733": {
      "op": "SHL"
    },
    "2734": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "DUP2",
      "path": "16"
    },
    "2735": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "2736": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2738": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2740": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2742": {
      "op": "SHL"
    },
    "2743": {
      "op": "SUB"
    },
    "2744": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14391
      ],
      "op": "DUP6",
      "path": "16"
    },
    "2745": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14391
      ],
      "op": "AND",
      "path": "16"
    },
    "2746": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14391
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "2747": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14391
      ],
      "op": "PUSH4",
      "path": "16",
      "value": "0x150B7A02"
    },
    "2752": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14391
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "2753": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xAD4"
    },
    "2756": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "2757": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "CALLER",
      "path": "23"
    },
    "2758": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "SWAP1",
      "path": "23"
    },
    "2759": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14406,
        14410
      ],
      "op": "DUP10",
      "path": "16"
    },
    "2760": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14406,
        14410
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "2761": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14412,
        14419
      ],
      "op": "DUP9",
      "path": "16"
    },
    "2762": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14412,
        14419
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "2763": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14421,
        14425
      ],
      "op": "DUP9",
      "path": "16"
    },
    "2764": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14421,
        14425
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "2765": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "2767": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "ADD",
      "path": "16"
    },
    "2768": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x1063"
    },
    "2771": {
      "fn": "ERC721._checkOnERC721Received",
      "jump": "i",
      "offset": [
        14355,
        14426
      ],
      "op": "JUMP",
      "path": "16"
    },
    "2772": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "2773": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x20"
    },
    "2775": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "2777": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "2778": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "DUP1",
      "path": "16"
    },
    "2779": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "DUP4",
      "path": "16"
    },
    "2780": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "SUB",
      "path": "16"
    },
    "2781": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "DUP2",
      "path": "16"
    },
    "2782": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x0"
    },
    "2784": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "DUP8",
      "path": "16"
    },
    "2785": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "GAS",
      "path": "16"
    },
    "2786": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "CALL",
      "path": "16"
    },
    "2787": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "SWAP3",
      "path": "16"
    },
    "2788": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "POP",
      "path": "16"
    },
    "2789": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "POP",
      "path": "16"
    },
    "2790": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "POP",
      "path": "16"
    },
    "2791": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "DUP1",
      "path": "16"
    },
    "2792": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "ISZERO",
      "path": "16"
    },
    "2793": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xB0F"
    },
    "2796": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "2797": {
      "op": "POP"
    },
    "2798": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "2800": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "DUP1",
      "path": "16"
    },
    "2801": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "2802": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x1F"
    },
    "2804": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "RETURNDATASIZE",
      "path": "16"
    },
    "2805": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "2806": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "DUP2",
      "path": "16"
    },
    "2807": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "ADD",
      "path": "16"
    },
    "2808": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "2810": {
      "op": "NOT"
    },
    "2811": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "AND",
      "path": "16"
    },
    "2812": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "DUP3",
      "path": "16"
    },
    "2813": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "ADD",
      "path": "16"
    },
    "2814": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "2815": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "SWAP3",
      "path": "16"
    },
    "2816": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "2817": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xB0C"
    },
    "2820": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "SWAP2",
      "path": "16"
    },
    "2821": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "DUP2",
      "path": "16"
    },
    "2822": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "ADD",
      "path": "16"
    },
    "2823": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "2824": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x10A0"
    },
    "2827": {
      "fn": "ERC721._checkOnERC721Received",
      "jump": "i",
      "offset": [
        14355,
        14426
      ],
      "op": "JUMP",
      "path": "16"
    },
    "2828": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "2829": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x1"
    },
    "2831": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14355,
        14426
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "2832": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xB6C"
    },
    "2835": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "2836": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "RETURNDATASIZE",
      "path": "16"
    },
    "2837": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "DUP1",
      "path": "16"
    },
    "2838": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "DUP1",
      "path": "16"
    },
    "2839": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "ISZERO",
      "path": "16"
    },
    "2840": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xB3D"
    },
    "2843": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "2844": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "2846": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "2847": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "SWAP2",
      "path": "16"
    },
    "2848": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "POP",
      "path": "16"
    },
    "2849": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x1F"
    },
    "2851": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "NOT",
      "path": "16"
    },
    "2852": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x3F"
    },
    "2854": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "RETURNDATASIZE",
      "path": "16"
    },
    "2855": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "ADD",
      "path": "16"
    },
    "2856": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "AND",
      "path": "16"
    },
    "2857": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "DUP3",
      "path": "16"
    },
    "2858": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "ADD",
      "path": "16"
    },
    "2859": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x40"
    },
    "2861": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "2862": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "RETURNDATASIZE",
      "path": "16"
    },
    "2863": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "DUP3",
      "path": "16"
    },
    "2864": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "2865": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "RETURNDATASIZE",
      "path": "16"
    },
    "2866": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x0"
    },
    "2868": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x20"
    },
    "2870": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "DUP5",
      "path": "16"
    },
    "2871": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "ADD",
      "path": "16"
    },
    "2872": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "RETURNDATACOPY",
      "path": "16"
    },
    "2873": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xB42"
    },
    "2876": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "JUMP",
      "path": "16"
    },
    "2877": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "2878": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x60"
    },
    "2880": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "SWAP2",
      "path": "16"
    },
    "2881": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "POP",
      "path": "16"
    },
    "2882": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "2883": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "POP",
      "path": "16"
    },
    "2884": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14593,
        14599
      ],
      "op": "DUP1",
      "path": "16"
    },
    "2885": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14593,
        14606
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "2886": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14610,
        14611
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x0"
    },
    "2888": {
      "branch": 74,
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14593,
        14611
      ],
      "op": "SUB",
      "path": "16"
    },
    "2889": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14589,
        14910
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0xB64"
    },
    "2892": {
      "branch": 74,
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14589,
        14910
      ],
      "op": "JUMPI",
      "path": "16"
    },
    "2893": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14635,
        14695
      ],
      "op": "PUSH1",
      "path": "16",
      "statement": 45,
      "value": "0x40"
    },
    "2895": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14635,
        14695
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "2896": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "2900": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "2902": {
      "op": "SHL"
    },
    "2903": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14635,
        14695
      ],
      "op": "DUP2",
      "path": "16"
    },
    "2904": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14635,
        14695
      ],
      "op": "MSTORE",
      "path": "16"
    },
    "2905": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14635,
        14695
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x4"
    },
    "2907": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14635,
        14695
      ],
      "op": "ADD",
      "path": "16"
    },
    "2908": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14635,
        14695
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x3A7"
    },
    "2911": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14635,
        14695
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "2912": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14635,
        14695
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x1011"
    },
    "2915": {
      "fn": "ERC721._checkOnERC721Received",
      "jump": "i",
      "offset": [
        14635,
        14695
      ],
      "op": "JUMP",
      "path": "16"
    },
    "2916": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14589,
        14910
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "2917": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14862,
        14868
      ],
      "op": "DUP1",
      "path": "16"
    },
    "2918": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14856,
        14869
      ],
      "op": "MLOAD",
      "path": "16"
    },
    "2919": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14847,
        14853
      ],
      "op": "DUP2",
      "path": "16"
    },
    "2920": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14843,
        14845
      ],
      "op": "PUSH1",
      "path": "16",
      "value": "0x20"
    },
    "2922": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14839,
        14854
      ],
      "op": "ADD",
      "path": "16"
    },
    "2923": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14832,
        14870
      ],
      "op": "REVERT",
      "path": "16"
    },
    "2924": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14351,
        14924
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "2925": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2927": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2929": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "2931": {
      "op": "SHL"
    },
    "2932": {
      "op": "SUB"
    },
    "2933": {
      "op": "NOT"
    },
    "2934": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14476,
        14527
      ],
      "op": "AND",
      "path": "16",
      "statement": 46
    },
    "2935": {
      "op": "PUSH4",
      "value": "0xA85BD01"
    },
    "2940": {
      "op": "PUSH1",
      "value": "0xE1"
    },
    "2942": {
      "op": "SHL"
    },
    "2943": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14476,
        14527
      ],
      "op": "EQ",
      "path": "16"
    },
    "2944": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14476,
        14527
      ],
      "op": "SWAP1",
      "path": "16"
    },
    "2945": {
      "op": "POP"
    },
    "2946": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14469,
        14527
      ],
      "op": "PUSH2",
      "path": "16",
      "value": "0x790"
    },
    "2949": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14469,
        14527
      ],
      "op": "JUMP",
      "path": "16"
    },
    "2950": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14316,
        14976
      ],
      "op": "JUMPDEST",
      "path": "16"
    },
    "2951": {
      "op": "POP"
    },
    "2952": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14961,
        14965
      ],
      "op": "PUSH1",
      "path": "16",
      "statement": 47,
      "value": "0x1"
    },
    "2954": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14151,
        14982
      ],
      "op": "SWAP5",
      "path": "16"
    },
    "2955": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14151,
        14982
      ],
      "op": "SWAP4",
      "path": "16"
    },
    "2956": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14151,
        14982
      ],
      "op": "POP",
      "path": "16"
    },
    "2957": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14151,
        14982
      ],
      "op": "POP",
      "path": "16"
    },
    "2958": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14151,
        14982
      ],
      "op": "POP",
      "path": "16"
    },
    "2959": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        14151,
        14982
      ],
      "op": "POP",
      "path": "16"
    },
    "2960": {
      "fn": "ERC721._checkOnERC721Received",
      "jump": "o",
      "offset": [
        14151,
        14982
      ],
      "op": "JUMP",
      "path": "16"
    },
    "2961": {
      "fn": "Math.log10",
      "offset": [
        9889,
        10779
      ],
      "op": "JUMPDEST",
      "path": "30"
    },
    "2962": {
      "fn": "Math.log10",
      "offset": [
        9942,
        9949
      ],
      "op": "PUSH1",
      "path": "30",
      "value": "0x0"
    },
    "2964": {
      "fn": "Math.log10",
      "offset": [
        9942,
        9949
      ],
      "op": "DUP1",
      "path": "30"
    },
    "2965": {
      "op": "PUSH19",
      "value": "0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01"
    },
    "2985": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "2987": {
      "op": "SHL"
    },
    "2988": {
      "fn": "Math.log10",
      "offset": [
        10017,
        10032
      ],
      "op": "DUP4",
      "path": "30"
    },
    "2989": {
      "branch": 75,
      "fn": "Math.log10",
      "offset": [
        10017,
        10032
      ],
      "op": "LT",
      "path": "30"
    },
    "2990": {
      "fn": "Math.log10",
      "offset": [
        10013,
        10112
      ],
      "op": "PUSH2",
      "path": "30",
      "value": "0xBD0"
    },
    "2993": {
      "branch": 75,
      "fn": "Math.log10",
      "offset": [
        10013,
        10112
      ],
      "op": "JUMPI",
      "path": "30"
    },
    "2994": {
      "op": "PUSH19",
      "value": "0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01"
    },
    "3014": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3016": {
      "op": "SHL"
    },
    "3017": {
      "fn": "Math.log10",
      "offset": [
        10052,
        10067
      ],
      "op": "DUP4",
      "path": "30",
      "statement": 48
    },
    "3018": {
      "fn": "Math.log10",
      "offset": [
        10052,
        10067
      ],
      "op": "DIV",
      "path": "30"
    },
    "3019": {
      "fn": "Math.log10",
      "offset": [
        10052,
        10067
      ],
      "op": "SWAP3",
      "path": "30"
    },
    "3020": {
      "op": "POP"
    },
    "3021": {
      "fn": "Math.log10",
      "offset": [
        10095,
        10097
      ],
      "op": "PUSH1",
      "path": "30",
      "statement": 49,
      "value": "0x40"
    },
    "3023": {
      "fn": "Math.log10",
      "offset": [
        10085,
        10097
      ],
      "op": "ADD",
      "path": "30"
    },
    "3024": {
      "fn": "Math.log10",
      "offset": [
        10013,
        10112
      ],
      "op": "JUMPDEST",
      "path": "30"
    },
    "3025": {
      "fn": "Math.log10",
      "offset": [
        10138,
        10144
      ],
      "op": "PUSH14",
      "path": "30",
      "value": "0x4EE2D6D415B85ACEF8100000000"
    },
    "3040": {
      "fn": "Math.log10",
      "offset": [
        10129,
        10134
      ],
      "op": "DUP4",
      "path": "30"
    },
    "3041": {
      "branch": 76,
      "fn": "Math.log10",
      "offset": [
        10129,
        10144
      ],
      "op": "LT",
      "path": "30"
    },
    "3042": {
      "fn": "Math.log10",
      "offset": [
        10125,
        10224
      ],
      "op": "PUSH2",
      "path": "30",
      "value": "0xBFC"
    },
    "3045": {
      "branch": 76,
      "fn": "Math.log10",
      "offset": [
        10125,
        10224
      ],
      "op": "JUMPI",
      "path": "30"
    },
    "3046": {
      "fn": "Math.log10",
      "offset": [
        10173,
        10179
      ],
      "op": "PUSH14",
      "path": "30",
      "statement": 50,
      "value": "0x4EE2D6D415B85ACEF8100000000"
    },
    "3061": {
      "fn": "Math.log10",
      "offset": [
        10164,
        10179
      ],
      "op": "DUP4",
      "path": "30"
    },
    "3062": {
      "fn": "Math.log10",
      "offset": [
        10164,
        10179
      ],
      "op": "DIV",
      "path": "30"
    },
    "3063": {
      "fn": "Math.log10",
      "offset": [
        10164,
        10179
      ],
      "op": "SWAP3",
      "path": "30"
    },
    "3064": {
      "op": "POP"
    },
    "3065": {
      "fn": "Math.log10",
      "offset": [
        10207,
        10209
      ],
      "op": "PUSH1",
      "path": "30",
      "statement": 51,
      "value": "0x20"
    },
    "3067": {
      "fn": "Math.log10",
      "offset": [
        10197,
        10209
      ],
      "op": "ADD",
      "path": "30"
    },
    "3068": {
      "fn": "Math.log10",
      "offset": [
        10125,
        10224
      ],
      "op": "JUMPDEST",
      "path": "30"
    },
    "3069": {
      "fn": "Math.log10",
      "offset": [
        10250,
        10256
      ],
      "op": "PUSH7",
      "path": "30",
      "value": "0x2386F26FC10000"
    },
    "3077": {
      "fn": "Math.log10",
      "offset": [
        10241,
        10246
      ],
      "op": "DUP4",
      "path": "30"
    },
    "3078": {
      "branch": 77,
      "fn": "Math.log10",
      "offset": [
        10241,
        10256
      ],
      "op": "LT",
      "path": "30"
    },
    "3079": {
      "fn": "Math.log10",
      "offset": [
        10237,
        10336
      ],
      "op": "PUSH2",
      "path": "30",
      "value": "0xC1A"
    },
    "3082": {
      "branch": 77,
      "fn": "Math.log10",
      "offset": [
        10237,
        10336
      ],
      "op": "JUMPI",
      "path": "30"
    },
    "3083": {
      "fn": "Math.log10",
      "offset": [
        10285,
        10291
      ],
      "op": "PUSH7",
      "path": "30",
      "statement": 52,
      "value": "0x2386F26FC10000"
    },
    "3091": {
      "fn": "Math.log10",
      "offset": [
        10276,
        10291
      ],
      "op": "DUP4",
      "path": "30"
    },
    "3092": {
      "fn": "Math.log10",
      "offset": [
        10276,
        10291
      ],
      "op": "DIV",
      "path": "30"
    },
    "3093": {
      "fn": "Math.log10",
      "offset": [
        10276,
        10291
      ],
      "op": "SWAP3",
      "path": "30"
    },
    "3094": {
      "op": "POP"
    },
    "3095": {
      "fn": "Math.log10",
      "offset": [
        10319,
        10321
      ],
      "op": "PUSH1",
      "path": "30",
      "statement": 53,
      "value": "0x10"
    },
    "3097": {
      "fn": "Math.log10",
      "offset": [
        10309,
        10321
      ],
      "op": "ADD",
      "path": "30"
    },
    "3098": {
      "fn": "Math.log10",
      "offset": [
        10237,
        10336
      ],
      "op": "JUMPDEST",
      "path": "30"
    },
    "3099": {
      "fn": "Math.log10",
      "offset": [
        10362,
        10367
      ],
      "op": "PUSH4",
      "path": "30",
      "value": "0x5F5E100"
    },
    "3104": {
      "fn": "Math.log10",
      "offset": [
        10353,
        10358
      ],
      "op": "DUP4",
      "path": "30"
    },
    "3105": {
      "branch": 78,
      "fn": "Math.log10",
      "offset": [
        10353,
        10367
      ],
      "op": "LT",
      "path": "30"
    },
    "3106": {
      "fn": "Math.log10",
      "offset": [
        10349,
        10445
      ],
      "op": "PUSH2",
      "path": "30",
      "value": "0xC32"
    },
    "3109": {
      "branch": 78,
      "fn": "Math.log10",
      "offset": [
        10349,
        10445
      ],
      "op": "JUMPI",
      "path": "30"
    },
    "3110": {
      "fn": "Math.log10",
      "offset": [
        10396,
        10401
      ],
      "op": "PUSH4",
      "path": "30",
      "statement": 54,
      "value": "0x5F5E100"
    },
    "3115": {
      "fn": "Math.log10",
      "offset": [
        10387,
        10401
      ],
      "op": "DUP4",
      "path": "30"
    },
    "3116": {
      "fn": "Math.log10",
      "offset": [
        10387,
        10401
      ],
      "op": "DIV",
      "path": "30"
    },
    "3117": {
      "fn": "Math.log10",
      "offset": [
        10387,
        10401
      ],
      "op": "SWAP3",
      "path": "30"
    },
    "3118": {
      "op": "POP"
    },
    "3119": {
      "fn": "Math.log10",
      "offset": [
        10429,
        10430
      ],
      "op": "PUSH1",
      "path": "30",
      "statement": 55,
      "value": "0x8"
    },
    "3121": {
      "fn": "Math.log10",
      "offset": [
        10419,
        10430
      ],
      "op": "ADD",
      "path": "30"
    },
    "3122": {
      "fn": "Math.log10",
      "offset": [
        10349,
        10445
      ],
      "op": "JUMPDEST",
      "path": "30"
    },
    "3123": {
      "fn": "Math.log10",
      "offset": [
        10471,
        10476
      ],
      "op": "PUSH2",
      "path": "30",
      "value": "0x2710"
    },
    "3126": {
      "fn": "Math.log10",
      "offset": [
        10462,
        10467
      ],
      "op": "DUP4",
      "path": "30"
    },
    "3127": {
      "branch": 79,
      "fn": "Math.log10",
      "offset": [
        10462,
        10476
      ],
      "op": "LT",
      "path": "30"
    },
    "3128": {
      "fn": "Math.log10",
      "offset": [
        10458,
        10554
      ],
      "op": "PUSH2",
      "path": "30",
      "value": "0xC46"
    },
    "3131": {
      "branch": 79,
      "fn": "Math.log10",
      "offset": [
        10458,
        10554
      ],
      "op": "JUMPI",
      "path": "30"
    },
    "3132": {
      "fn": "Math.log10",
      "offset": [
        10505,
        10510
      ],
      "op": "PUSH2",
      "path": "30",
      "statement": 56,
      "value": "0x2710"
    },
    "3135": {
      "fn": "Math.log10",
      "offset": [
        10496,
        10510
      ],
      "op": "DUP4",
      "path": "30"
    },
    "3136": {
      "fn": "Math.log10",
      "offset": [
        10496,
        10510
      ],
      "op": "DIV",
      "path": "30"
    },
    "3137": {
      "fn": "Math.log10",
      "offset": [
        10496,
        10510
      ],
      "op": "SWAP3",
      "path": "30"
    },
    "3138": {
      "op": "POP"
    },
    "3139": {
      "fn": "Math.log10",
      "offset": [
        10538,
        10539
      ],
      "op": "PUSH1",
      "path": "30",
      "statement": 57,
      "value": "0x4"
    },
    "3141": {
      "fn": "Math.log10",
      "offset": [
        10528,
        10539
      ],
      "op": "ADD",
      "path": "30"
    },
    "3142": {
      "fn": "Math.log10",
      "offset": [
        10458,
        10554
      ],
      "op": "JUMPDEST",
      "path": "30"
    },
    "3143": {
      "fn": "Math.log10",
      "offset": [
        10580,
        10585
      ],
      "op": "PUSH1",
      "path": "30",
      "value": "0x64"
    },
    "3145": {
      "fn": "Math.log10",
      "offset": [
        10571,
        10576
      ],
      "op": "DUP4",
      "path": "30"
    },
    "3146": {
      "branch": 80,
      "fn": "Math.log10",
      "offset": [
        10571,
        10585
      ],
      "op": "LT",
      "path": "30"
    },
    "3147": {
      "fn": "Math.log10",
      "offset": [
        10567,
        10663
      ],
      "op": "PUSH2",
      "path": "30",
      "value": "0xC58"
    },
    "3150": {
      "branch": 80,
      "fn": "Math.log10",
      "offset": [
        10567,
        10663
      ],
      "op": "JUMPI",
      "path": "30"
    },
    "3151": {
      "fn": "Math.log10",
      "offset": [
        10614,
        10619
      ],
      "op": "PUSH1",
      "path": "30",
      "statement": 58,
      "value": "0x64"
    },
    "3153": {
      "fn": "Math.log10",
      "offset": [
        10605,
        10619
      ],
      "op": "DUP4",
      "path": "30"
    },
    "3154": {
      "fn": "Math.log10",
      "offset": [
        10605,
        10619
      ],
      "op": "DIV",
      "path": "30"
    },
    "3155": {
      "fn": "Math.log10",
      "offset": [
        10605,
        10619
      ],
      "op": "SWAP3",
      "path": "30"
    },
    "3156": {
      "op": "POP"
    },
    "3157": {
      "fn": "Math.log10",
      "offset": [
        10647,
        10648
      ],
      "op": "PUSH1",
      "path": "30",
      "statement": 59,
      "value": "0x2"
    },
    "3159": {
      "fn": "Math.log10",
      "offset": [
        10637,
        10648
      ],
      "op": "ADD",
      "path": "30"
    },
    "3160": {
      "fn": "Math.log10",
      "offset": [
        10567,
        10663
      ],
      "op": "JUMPDEST",
      "path": "30"
    },
    "3161": {
      "fn": "Math.log10",
      "offset": [
        10689,
        10694
      ],
      "op": "PUSH1",
      "path": "30",
      "value": "0xA"
    },
    "3163": {
      "fn": "Math.log10",
      "offset": [
        10680,
        10685
      ],
      "op": "DUP4",
      "path": "30"
    },
    "3164": {
      "branch": 81,
      "fn": "Math.log10",
      "offset": [
        10680,
        10694
      ],
      "op": "LT",
      "path": "30"
    },
    "3165": {
      "fn": "Math.log10",
      "offset": [
        10676,
        10740
      ],
      "op": "PUSH2",
      "path": "30",
      "value": "0x274"
    },
    "3168": {
      "branch": 81,
      "fn": "Math.log10",
      "offset": [
        10676,
        10740
      ],
      "op": "JUMPI",
      "path": "30"
    },
    "3169": {
      "fn": "Math.log10",
      "offset": [
        10724,
        10725
      ],
      "op": "PUSH1",
      "path": "30",
      "statement": 60,
      "value": "0x1"
    },
    "3171": {
      "fn": "Math.log10",
      "offset": [
        10714,
        10725
      ],
      "op": "ADD",
      "path": "30"
    },
    "3172": {
      "fn": "Math.log10",
      "offset": [
        10766,
        10772
      ],
      "op": "SWAP3",
      "path": "30",
      "statement": 61
    },
    "3173": {
      "fn": "Math.log10",
      "offset": [
        9889,
        10779
      ],
      "op": "SWAP2",
      "path": "30"
    },
    "3174": {
      "op": "POP"
    },
    "3175": {
      "op": "POP"
    },
    "3176": {
      "fn": "Math.log10",
      "jump": "o",
      "offset": [
        9889,
        10779
      ],
      "op": "JUMP",
      "path": "30"
    },
    "3177": {
      "op": "JUMPDEST"
    },
    "3178": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3180": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3182": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "3184": {
      "op": "SHL"
    },
    "3185": {
      "op": "SUB"
    },
    "3186": {
      "op": "NOT"
    },
    "3187": {
      "op": "DUP2"
    },
    "3188": {
      "op": "AND"
    },
    "3189": {
      "op": "DUP2"
    },
    "3190": {
      "op": "EQ"
    },
    "3191": {
      "op": "PUSH2",
      "value": "0x6A8"
    },
    "3194": {
      "op": "JUMPI"
    },
    "3195": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3197": {
      "op": "DUP1"
    },
    "3198": {
      "op": "REVERT"
    },
    "3199": {
      "op": "JUMPDEST"
    },
    "3200": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3202": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3204": {
      "op": "DUP3"
    },
    "3205": {
      "op": "DUP5"
    },
    "3206": {
      "op": "SUB"
    },
    "3207": {
      "op": "SLT"
    },
    "3208": {
      "op": "ISZERO"
    },
    "3209": {
      "op": "PUSH2",
      "value": "0xC91"
    },
    "3212": {
      "op": "JUMPI"
    },
    "3213": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3215": {
      "op": "DUP1"
    },
    "3216": {
      "op": "REVERT"
    },
    "3217": {
      "op": "JUMPDEST"
    },
    "3218": {
      "op": "DUP2"
    },
    "3219": {
      "op": "CALLDATALOAD"
    },
    "3220": {
      "op": "PUSH2",
      "value": "0x642"
    },
    "3223": {
      "op": "DUP2"
    },
    "3224": {
      "op": "PUSH2",
      "value": "0xC69"
    },
    "3227": {
      "jump": "i",
      "op": "JUMP"
    },
    "3228": {
      "op": "JUMPDEST"
    },
    "3229": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3231": {
      "op": "JUMPDEST"
    },
    "3232": {
      "op": "DUP4"
    },
    "3233": {
      "op": "DUP2"
    },
    "3234": {
      "op": "LT"
    },
    "3235": {
      "op": "ISZERO"
    },
    "3236": {
      "op": "PUSH2",
      "value": "0xCB7"
    },
    "3239": {
      "op": "JUMPI"
    },
    "3240": {
      "op": "DUP2"
    },
    "3241": {
      "op": "DUP2"
    },
    "3242": {
      "op": "ADD"
    },
    "3243": {
      "op": "MLOAD"
    },
    "3244": {
      "op": "DUP4"
    },
    "3245": {
      "op": "DUP3"
    },
    "3246": {
      "op": "ADD"
    },
    "3247": {
      "op": "MSTORE"
    },
    "3248": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3250": {
      "op": "ADD"
    },
    "3251": {
      "op": "PUSH2",
      "value": "0xC9F"
    },
    "3254": {
      "op": "JUMP"
    },
    "3255": {
      "op": "JUMPDEST"
    },
    "3256": {
      "op": "POP"
    },
    "3257": {
      "op": "POP"
    },
    "3258": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3260": {
      "op": "SWAP2"
    },
    "3261": {
      "op": "ADD"
    },
    "3262": {
      "op": "MSTORE"
    },
    "3263": {
      "jump": "o",
      "op": "JUMP"
    },
    "3264": {
      "op": "JUMPDEST"
    },
    "3265": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3267": {
      "op": "DUP2"
    },
    "3268": {
      "op": "MLOAD"
    },
    "3269": {
      "op": "DUP1"
    },
    "3270": {
      "op": "DUP5"
    },
    "3271": {
      "op": "MSTORE"
    },
    "3272": {
      "op": "PUSH2",
      "value": "0xCD8"
    },
    "3275": {
      "op": "DUP2"
    },
    "3276": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3278": {
      "op": "DUP7"
    },
    "3279": {
      "op": "ADD"
    },
    "3280": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3282": {
      "op": "DUP7"
    },
    "3283": {
      "op": "ADD"
    },
    "3284": {
      "op": "PUSH2",
      "value": "0xC9C"
    },
    "3287": {
      "jump": "i",
      "op": "JUMP"
    },
    "3288": {
      "op": "JUMPDEST"
    },
    "3289": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "3291": {
      "op": "ADD"
    },
    "3292": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "3294": {
      "op": "NOT"
    },
    "3295": {
      "op": "AND"
    },
    "3296": {
      "op": "SWAP3"
    },
    "3297": {
      "op": "SWAP1"
    },
    "3298": {
      "op": "SWAP3"
    },
    "3299": {
      "op": "ADD"
    },
    "3300": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3302": {
      "op": "ADD"
    },
    "3303": {
      "op": "SWAP3"
    },
    "3304": {
      "op": "SWAP2"
    },
    "3305": {
      "op": "POP"
    },
    "3306": {
      "op": "POP"
    },
    "3307": {
      "jump": "o",
      "op": "JUMP"
    },
    "3308": {
      "op": "JUMPDEST"
    },
    "3309": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3311": {
      "op": "DUP2"
    },
    "3312": {
      "op": "MSTORE"
    },
    "3313": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3315": {
      "op": "PUSH2",
      "value": "0x642"
    },
    "3318": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3320": {
      "op": "DUP4"
    },
    "3321": {
      "op": "ADD"
    },
    "3322": {
      "op": "DUP5"
    },
    "3323": {
      "op": "PUSH2",
      "value": "0xCC0"
    },
    "3326": {
      "jump": "i",
      "op": "JUMP"
    },
    "3327": {
      "op": "JUMPDEST"
    },
    "3328": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3330": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3332": {
      "op": "DUP3"
    },
    "3333": {
      "op": "DUP5"
    },
    "3334": {
      "op": "SUB"
    },
    "3335": {
      "op": "SLT"
    },
    "3336": {
      "op": "ISZERO"
    },
    "3337": {
      "op": "PUSH2",
      "value": "0xD11"
    },
    "3340": {
      "op": "JUMPI"
    },
    "3341": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3343": {
      "op": "DUP1"
    },
    "3344": {
      "op": "REVERT"
    },
    "3345": {
      "op": "JUMPDEST"
    },
    "3346": {
      "op": "POP"
    },
    "3347": {
      "op": "CALLDATALOAD"
    },
    "3348": {
      "op": "SWAP2"
    },
    "3349": {
      "op": "SWAP1"
    },
    "3350": {
      "op": "POP"
    },
    "3351": {
      "jump": "o",
      "op": "JUMP"
    },
    "3352": {
      "op": "JUMPDEST"
    },
    "3353": {
      "op": "DUP1"
    },
    "3354": {
      "op": "CALLDATALOAD"
    },
    "3355": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3357": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3359": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "3361": {
      "op": "SHL"
    },
    "3362": {
      "op": "SUB"
    },
    "3363": {
      "op": "DUP2"
    },
    "3364": {
      "op": "AND"
    },
    "3365": {
      "op": "DUP2"
    },
    "3366": {
      "op": "EQ"
    },
    "3367": {
      "op": "PUSH2",
      "value": "0xD2F"
    },
    "3370": {
      "op": "JUMPI"
    },
    "3371": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3373": {
      "op": "DUP1"
    },
    "3374": {
      "op": "REVERT"
    },
    "3375": {
      "op": "JUMPDEST"
    },
    "3376": {
      "op": "SWAP2"
    },
    "3377": {
      "op": "SWAP1"
    },
    "3378": {
      "op": "POP"
    },
    "3379": {
      "jump": "o",
      "op": "JUMP"
    },
    "3380": {
      "op": "JUMPDEST"
    },
    "3381": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3383": {
      "op": "DUP1"
    },
    "3384": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3386": {
      "op": "DUP4"
    },
    "3387": {
      "op": "DUP6"
    },
    "3388": {
      "op": "SUB"
    },
    "3389": {
      "op": "SLT"
    },
    "3390": {
      "op": "ISZERO"
    },
    "3391": {
      "op": "PUSH2",
      "value": "0xD47"
    },
    "3394": {
      "op": "JUMPI"
    },
    "3395": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3397": {
      "op": "DUP1"
    },
    "3398": {
      "op": "REVERT"
    },
    "3399": {
      "op": "JUMPDEST"
    },
    "3400": {
      "op": "PUSH2",
      "value": "0xD50"
    },
    "3403": {
      "op": "DUP4"
    },
    "3404": {
      "op": "PUSH2",
      "value": "0xD18"
    },
    "3407": {
      "jump": "i",
      "op": "JUMP"
    },
    "3408": {
      "op": "JUMPDEST"
    },
    "3409": {
      "op": "SWAP5"
    },
    "3410": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3412": {
      "op": "SWAP4"
    },
    "3413": {
      "op": "SWAP1"
    },
    "3414": {
      "op": "SWAP4"
    },
    "3415": {
      "op": "ADD"
    },
    "3416": {
      "op": "CALLDATALOAD"
    },
    "3417": {
      "op": "SWAP4"
    },
    "3418": {
      "op": "POP"
    },
    "3419": {
      "op": "POP"
    },
    "3420": {
      "op": "POP"
    },
    "3421": {
      "jump": "o",
      "op": "JUMP"
    },
    "3422": {
      "op": "JUMPDEST"
    },
    "3423": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3425": {
      "op": "DUP1"
    },
    "3426": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3428": {
      "op": "PUSH1",
      "value": "0x60"
    },
    "3430": {
      "op": "DUP5"
    },
    "3431": {
      "op": "DUP7"
    },
    "3432": {
      "op": "SUB"
    },
    "3433": {
      "op": "SLT"
    },
    "3434": {
      "op": "ISZERO"
    },
    "3435": {
      "op": "PUSH2",
      "value": "0xD73"
    },
    "3438": {
      "op": "JUMPI"
    },
    "3439": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3441": {
      "op": "DUP1"
    },
    "3442": {
      "op": "REVERT"
    },
    "3443": {
      "op": "JUMPDEST"
    },
    "3444": {
      "op": "PUSH2",
      "value": "0xD7C"
    },
    "3447": {
      "op": "DUP5"
    },
    "3448": {
      "op": "PUSH2",
      "value": "0xD18"
    },
    "3451": {
      "jump": "i",
      "op": "JUMP"
    },
    "3452": {
      "op": "JUMPDEST"
    },
    "3453": {
      "op": "SWAP3"
    },
    "3454": {
      "op": "POP"
    },
    "3455": {
      "op": "PUSH2",
      "value": "0xD8A"
    },
    "3458": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3460": {
      "op": "DUP6"
    },
    "3461": {
      "op": "ADD"
    },
    "3462": {
      "op": "PUSH2",
      "value": "0xD18"
    },
    "3465": {
      "jump": "i",
      "op": "JUMP"
    },
    "3466": {
      "op": "JUMPDEST"
    },
    "3467": {
      "op": "SWAP2"
    },
    "3468": {
      "op": "POP"
    },
    "3469": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3471": {
      "op": "DUP5"
    },
    "3472": {
      "op": "ADD"
    },
    "3473": {
      "op": "CALLDATALOAD"
    },
    "3474": {
      "op": "SWAP1"
    },
    "3475": {
      "op": "POP"
    },
    "3476": {
      "op": "SWAP3"
    },
    "3477": {
      "op": "POP"
    },
    "3478": {
      "op": "SWAP3"
    },
    "3479": {
      "op": "POP"
    },
    "3480": {
      "op": "SWAP3"
    },
    "3481": {
      "jump": "o",
      "op": "JUMP"
    },
    "3482": {
      "op": "JUMPDEST"
    },
    "3483": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3485": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3487": {
      "op": "DUP3"
    },
    "3488": {
      "op": "DUP5"
    },
    "3489": {
      "op": "SUB"
    },
    "3490": {
      "op": "SLT"
    },
    "3491": {
      "op": "ISZERO"
    },
    "3492": {
      "op": "PUSH2",
      "value": "0xDAC"
    },
    "3495": {
      "op": "JUMPI"
    },
    "3496": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3498": {
      "op": "DUP1"
    },
    "3499": {
      "op": "REVERT"
    },
    "3500": {
      "op": "JUMPDEST"
    },
    "3501": {
      "op": "PUSH2",
      "value": "0x642"
    },
    "3504": {
      "op": "DUP3"
    },
    "3505": {
      "op": "PUSH2",
      "value": "0xD18"
    },
    "3508": {
      "jump": "i",
      "op": "JUMP"
    },
    "3509": {
      "op": "JUMPDEST"
    },
    "3510": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3512": {
      "op": "DUP1"
    },
    "3513": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3515": {
      "op": "DUP4"
    },
    "3516": {
      "op": "DUP6"
    },
    "3517": {
      "op": "SUB"
    },
    "3518": {
      "op": "SLT"
    },
    "3519": {
      "op": "ISZERO"
    },
    "3520": {
      "op": "PUSH2",
      "value": "0xDC8"
    },
    "3523": {
      "op": "JUMPI"
    },
    "3524": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3526": {
      "op": "DUP1"
    },
    "3527": {
      "op": "REVERT"
    },
    "3528": {
      "op": "JUMPDEST"
    },
    "3529": {
      "op": "PUSH2",
      "value": "0xDD1"
    },
    "3532": {
      "op": "DUP4"
    },
    "3533": {
      "op": "PUSH2",
      "value": "0xD18"
    },
    "3536": {
      "jump": "i",
      "op": "JUMP"
    },
    "3537": {
      "op": "JUMPDEST"
    },
    "3538": {
      "op": "SWAP2"
    },
    "3539": {
      "op": "POP"
    },
    "3540": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3542": {
      "op": "DUP4"
    },
    "3543": {
      "op": "ADD"
    },
    "3544": {
      "op": "CALLDATALOAD"
    },
    "3545": {
      "op": "DUP1"
    },
    "3546": {
      "op": "ISZERO"
    },
    "3547": {
      "op": "ISZERO"
    },
    "3548": {
      "op": "DUP2"
    },
    "3549": {
      "op": "EQ"
    },
    "3550": {
      "op": "PUSH2",
      "value": "0xDE6"
    },
    "3553": {
      "op": "JUMPI"
    },
    "3554": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3556": {
      "op": "DUP1"
    },
    "3557": {
      "op": "REVERT"
    },
    "3558": {
      "op": "JUMPDEST"
    },
    "3559": {
      "op": "DUP1"
    },
    "3560": {
      "op": "SWAP2"
    },
    "3561": {
      "op": "POP"
    },
    "3562": {
      "op": "POP"
    },
    "3563": {
      "op": "SWAP3"
    },
    "3564": {
      "op": "POP"
    },
    "3565": {
      "op": "SWAP3"
    },
    "3566": {
      "op": "SWAP1"
    },
    "3567": {
      "op": "POP"
    },
    "3568": {
      "jump": "o",
      "op": "JUMP"
    },
    "3569": {
      "op": "JUMPDEST"
    },
    "3570": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "3575": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "3577": {
      "op": "SHL"
    },
    "3578": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3580": {
      "op": "MSTORE"
    },
    "3581": {
      "op": "PUSH1",
      "value": "0x41"
    },
    "3583": {
      "op": "PUSH1",
      "value": "0x4"
    },
    "3585": {
      "op": "MSTORE"
    },
    "3586": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "3588": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3590": {
      "op": "REVERT"
    },
    "3591": {
      "op": "JUMPDEST"
    },
    "3592": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3594": {
      "op": "DUP1"
    },
    "3595": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3597": {
      "op": "DUP1"
    },
    "3598": {
      "op": "PUSH1",
      "value": "0x80"
    },
    "3600": {
      "op": "DUP6"
    },
    "3601": {
      "op": "DUP8"
    },
    "3602": {
      "op": "SUB"
    },
    "3603": {
      "op": "SLT"
    },
    "3604": {
      "op": "ISZERO"
    },
    "3605": {
      "op": "PUSH2",
      "value": "0xE1D"
    },
    "3608": {
      "op": "JUMPI"
    },
    "3609": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3611": {
      "op": "DUP1"
    },
    "3612": {
      "op": "REVERT"
    },
    "3613": {
      "op": "JUMPDEST"
    },
    "3614": {
      "op": "PUSH2",
      "value": "0xE26"
    },
    "3617": {
      "op": "DUP6"
    },
    "3618": {
      "op": "PUSH2",
      "value": "0xD18"
    },
    "3621": {
      "jump": "i",
      "op": "JUMP"
    },
    "3622": {
      "op": "JUMPDEST"
    },
    "3623": {
      "op": "SWAP4"
    },
    "3624": {
      "op": "POP"
    },
    "3625": {
      "op": "PUSH2",
      "value": "0xE34"
    },
    "3628": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3630": {
      "op": "DUP7"
    },
    "3631": {
      "op": "ADD"
    },
    "3632": {
      "op": "PUSH2",
      "value": "0xD18"
    },
    "3635": {
      "jump": "i",
      "op": "JUMP"
    },
    "3636": {
      "op": "JUMPDEST"
    },
    "3637": {
      "op": "SWAP3"
    },
    "3638": {
      "op": "POP"
    },
    "3639": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3641": {
      "op": "DUP6"
    },
    "3642": {
      "op": "ADD"
    },
    "3643": {
      "op": "CALLDATALOAD"
    },
    "3644": {
      "op": "SWAP2"
    },
    "3645": {
      "op": "POP"
    },
    "3646": {
      "op": "PUSH1",
      "value": "0x60"
    },
    "3648": {
      "op": "DUP6"
    },
    "3649": {
      "op": "ADD"
    },
    "3650": {
      "op": "CALLDATALOAD"
    },
    "3651": {
      "op": "PUSH8",
      "value": "0xFFFFFFFFFFFFFFFF"
    },
    "3660": {
      "op": "DUP1"
    },
    "3661": {
      "op": "DUP3"
    },
    "3662": {
      "op": "GT"
    },
    "3663": {
      "op": "ISZERO"
    },
    "3664": {
      "op": "PUSH2",
      "value": "0xE58"
    },
    "3667": {
      "op": "JUMPI"
    },
    "3668": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3670": {
      "op": "DUP1"
    },
    "3671": {
      "op": "REVERT"
    },
    "3672": {
      "op": "JUMPDEST"
    },
    "3673": {
      "op": "DUP2"
    },
    "3674": {
      "op": "DUP8"
    },
    "3675": {
      "op": "ADD"
    },
    "3676": {
      "op": "SWAP2"
    },
    "3677": {
      "op": "POP"
    },
    "3678": {
      "op": "DUP8"
    },
    "3679": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "3681": {
      "op": "DUP4"
    },
    "3682": {
      "op": "ADD"
    },
    "3683": {
      "op": "SLT"
    },
    "3684": {
      "op": "PUSH2",
      "value": "0xE6C"
    },
    "3687": {
      "op": "JUMPI"
    },
    "3688": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3690": {
      "op": "DUP1"
    },
    "3691": {
      "op": "REVERT"
    },
    "3692": {
      "op": "JUMPDEST"
    },
    "3693": {
      "op": "DUP2"
    },
    "3694": {
      "op": "CALLDATALOAD"
    },
    "3695": {
      "op": "DUP2"
    },
    "3696": {
      "op": "DUP2"
    },
    "3697": {
      "op": "GT"
    },
    "3698": {
      "op": "ISZERO"
    },
    "3699": {
      "op": "PUSH2",
      "value": "0xE7E"
    },
    "3702": {
      "op": "JUMPI"
    },
    "3703": {
      "op": "PUSH2",
      "value": "0xE7E"
    },
    "3706": {
      "op": "PUSH2",
      "value": "0xDF1"
    },
    "3709": {
      "jump": "i",
      "op": "JUMP"
    },
    "3710": {
      "op": "JUMPDEST"
    },
    "3711": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3713": {
      "op": "MLOAD"
    },
    "3714": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "3716": {
      "op": "DUP3"
    },
    "3717": {
      "op": "ADD"
    },
    "3718": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "3720": {
      "op": "NOT"
    },
    "3721": {
      "op": "SWAP1"
    },
    "3722": {
      "op": "DUP2"
    },
    "3723": {
      "op": "AND"
    },
    "3724": {
      "op": "PUSH1",
      "value": "0x3F"
    },
    "3726": {
      "op": "ADD"
    },
    "3727": {
      "op": "AND"
    },
    "3728": {
      "op": "DUP2"
    },
    "3729": {
      "op": "ADD"
    },
    "3730": {
      "op": "SWAP1"
    },
    "3731": {
      "op": "DUP4"
    },
    "3732": {
      "op": "DUP3"
    },
    "3733": {
      "op": "GT"
    },
    "3734": {
      "op": "DUP2"
    },
    "3735": {
      "op": "DUP4"
    },
    "3736": {
      "op": "LT"
    },
    "3737": {
      "op": "OR"
    },
    "3738": {
      "op": "ISZERO"
    },
    "3739": {
      "op": "PUSH2",
      "value": "0xEA6"
    },
    "3742": {
      "op": "JUMPI"
    },
    "3743": {
      "op": "PUSH2",
      "value": "0xEA6"
    },
    "3746": {
      "op": "PUSH2",
      "value": "0xDF1"
    },
    "3749": {
      "jump": "i",
      "op": "JUMP"
    },
    "3750": {
      "op": "JUMPDEST"
    },
    "3751": {
      "op": "DUP2"
    },
    "3752": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3754": {
      "op": "MSTORE"
    },
    "3755": {
      "op": "DUP3"
    },
    "3756": {
      "op": "DUP2"
    },
    "3757": {
      "op": "MSTORE"
    },
    "3758": {
      "op": "DUP11"
    },
    "3759": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3761": {
      "op": "DUP5"
    },
    "3762": {
      "op": "DUP8"
    },
    "3763": {
      "op": "ADD"
    },
    "3764": {
      "op": "ADD"
    },
    "3765": {
      "op": "GT"
    },
    "3766": {
      "op": "ISZERO"
    },
    "3767": {
      "op": "PUSH2",
      "value": "0xEBF"
    },
    "3770": {
      "op": "JUMPI"
    },
    "3771": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3773": {
      "op": "DUP1"
    },
    "3774": {
      "op": "REVERT"
    },
    "3775": {
      "op": "JUMPDEST"
    },
    "3776": {
      "op": "DUP3"
    },
    "3777": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3779": {
      "op": "DUP7"
    },
    "3780": {
      "op": "ADD"
    },
    "3781": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3783": {
      "op": "DUP4"
    },
    "3784": {
      "op": "ADD"
    },
    "3785": {
      "op": "CALLDATACOPY"
    },
    "3786": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3788": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3790": {
      "op": "DUP5"
    },
    "3791": {
      "op": "DUP4"
    },
    "3792": {
      "op": "ADD"
    },
    "3793": {
      "op": "ADD"
    },
    "3794": {
      "op": "MSTORE"
    },
    "3795": {
      "op": "DUP1"
    },
    "3796": {
      "op": "SWAP6"
    },
    "3797": {
      "op": "POP"
    },
    "3798": {
      "op": "POP"
    },
    "3799": {
      "op": "POP"
    },
    "3800": {
      "op": "POP"
    },
    "3801": {
      "op": "POP"
    },
    "3802": {
      "op": "POP"
    },
    "3803": {
      "op": "SWAP3"
    },
    "3804": {
      "op": "SWAP6"
    },
    "3805": {
      "op": "SWAP2"
    },
    "3806": {
      "op": "SWAP5"
    },
    "3807": {
      "op": "POP"
    },
    "3808": {
      "op": "SWAP3"
    },
    "3809": {
      "op": "POP"
    },
    "3810": {
      "jump": "o",
      "op": "JUMP"
    },
    "3811": {
      "op": "JUMPDEST"
    },
    "3812": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3814": {
      "op": "DUP1"
    },
    "3815": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3817": {
      "op": "DUP4"
    },
    "3818": {
      "op": "DUP6"
    },
    "3819": {
      "op": "SUB"
    },
    "3820": {
      "op": "SLT"
    },
    "3821": {
      "op": "ISZERO"
    },
    "3822": {
      "op": "PUSH2",
      "value": "0xEF6"
    },
    "3825": {
      "op": "JUMPI"
    },
    "3826": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3828": {
      "op": "DUP1"
    },
    "3829": {
      "op": "REVERT"
    },
    "3830": {
      "op": "JUMPDEST"
    },
    "3831": {
      "op": "PUSH2",
      "value": "0xEFF"
    },
    "3834": {
      "op": "DUP4"
    },
    "3835": {
      "op": "PUSH2",
      "value": "0xD18"
    },
    "3838": {
      "jump": "i",
      "op": "JUMP"
    },
    "3839": {
      "op": "JUMPDEST"
    },
    "3840": {
      "op": "SWAP2"
    },
    "3841": {
      "op": "POP"
    },
    "3842": {
      "op": "PUSH2",
      "value": "0xF0D"
    },
    "3845": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3847": {
      "op": "DUP5"
    },
    "3848": {
      "op": "ADD"
    },
    "3849": {
      "op": "PUSH2",
      "value": "0xD18"
    },
    "3852": {
      "jump": "i",
      "op": "JUMP"
    },
    "3853": {
      "op": "JUMPDEST"
    },
    "3854": {
      "op": "SWAP1"
    },
    "3855": {
      "op": "POP"
    },
    "3856": {
      "op": "SWAP3"
    },
    "3857": {
      "op": "POP"
    },
    "3858": {
      "op": "SWAP3"
    },
    "3859": {
      "op": "SWAP1"
    },
    "3860": {
      "op": "POP"
    },
    "3861": {
      "jump": "o",
      "op": "JUMP"
    },
    "3862": {
      "op": "JUMPDEST"
    },
    "3863": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3865": {
      "op": "DUP2"
    },
    "3866": {
      "op": "DUP2"
    },
    "3867": {
      "op": "SHR"
    },
    "3868": {
      "op": "SWAP1"
    },
    "3869": {
      "op": "DUP3"
    },
    "3870": {
      "op": "AND"
    },
    "3871": {
      "op": "DUP1"
    },
    "3872": {
      "op": "PUSH2",
      "value": "0xF2A"
    },
    "3875": {
      "op": "JUMPI"
    },
    "3876": {
      "op": "PUSH1",
      "value": "0x7F"
    },
    "3878": {
      "op": "DUP3"
    },
    "3879": {
      "op": "AND"
    },
    "3880": {
      "op": "SWAP2"
    },
    "3881": {
      "op": "POP"
    },
    "3882": {
      "op": "JUMPDEST"
    },
    "3883": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3885": {
      "op": "DUP3"
    },
    "3886": {
      "op": "LT"
    },
    "3887": {
      "op": "DUP2"
    },
    "3888": {
      "op": "SUB"
    },
    "3889": {
      "op": "PUSH2",
      "value": "0xF4A"
    },
    "3892": {
      "op": "JUMPI"
    },
    "3893": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "3898": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "3900": {
      "op": "SHL"
    },
    "3901": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3903": {
      "op": "MSTORE"
    },
    "3904": {
      "op": "PUSH1",
      "value": "0x22"
    },
    "3906": {
      "op": "PUSH1",
      "value": "0x4"
    },
    "3908": {
      "op": "MSTORE"
    },
    "3909": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "3911": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3913": {
      "op": "REVERT"
    },
    "3914": {
      "op": "JUMPDEST"
    },
    "3915": {
      "op": "POP"
    },
    "3916": {
      "op": "SWAP2"
    },
    "3917": {
      "op": "SWAP1"
    },
    "3918": {
      "op": "POP"
    },
    "3919": {
      "jump": "o",
      "op": "JUMP"
    },
    "3920": {
      "op": "JUMPDEST"
    },
    "3921": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3923": {
      "op": "DUP1"
    },
    "3924": {
      "op": "DUP3"
    },
    "3925": {
      "op": "MSTORE"
    },
    "3926": {
      "op": "PUSH1",
      "value": "0x2D"
    },
    "3928": {
      "op": "SWAP1"
    },
    "3929": {
      "op": "DUP3"
    },
    "3930": {
      "op": "ADD"
    },
    "3931": {
      "op": "MSTORE"
    },
    "3932": {
      "op": "PUSH32",
      "value": "0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65"
    },
    "3965": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3967": {
      "op": "DUP3"
    },
    "3968": {
      "op": "ADD"
    },
    "3969": {
      "op": "MSTORE"
    },
    "3970": {
      "op": "PUSH13",
      "value": "0x1C881BDC88185C1C1C9BDD9959"
    },
    "3984": {
      "op": "PUSH1",
      "value": "0x9A"
    },
    "3986": {
      "op": "SHL"
    },
    "3987": {
      "op": "PUSH1",
      "value": "0x60"
    },
    "3989": {
      "op": "DUP3"
    },
    "3990": {
      "op": "ADD"
    },
    "3991": {
      "op": "MSTORE"
    },
    "3992": {
      "op": "PUSH1",
      "value": "0x80"
    },
    "3994": {
      "op": "ADD"
    },
    "3995": {
      "op": "SWAP1"
    },
    "3996": {
      "jump": "o",
      "op": "JUMP"
    },
    "3997": {
      "op": "JUMPDEST"
    },
    "3998": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4000": {
      "op": "DUP4"
    },
    "4001": {
      "op": "MLOAD"
    },
    "4002": {
      "op": "PUSH2",
      "value": "0xFAF"
    },
    "4005": {
      "op": "DUP2"
    },
    "4006": {
      "op": "DUP5"
    },
    "4007": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "4009": {
      "op": "DUP9"
    },
    "4010": {
      "op": "ADD"
    },
    "4011": {
      "op": "PUSH2",
      "value": "0xC9C"
    },
    "4014": {
      "jump": "i",
      "op": "JUMP"
    },
    "4015": {
      "op": "JUMPDEST"
    },
    "4016": {
      "op": "DUP4"
    },
    "4017": {
      "op": "MLOAD"
    },
    "4018": {
      "op": "SWAP1"
    },
    "4019": {
      "op": "DUP4"
    },
    "4020": {
      "op": "ADD"
    },
    "4021": {
      "op": "SWAP1"
    },
    "4022": {
      "op": "PUSH2",
      "value": "0xFC3"
    },
    "4025": {
      "op": "DUP2"
    },
    "4026": {
      "op": "DUP4"
    },
    "4027": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "4029": {
      "op": "DUP9"
    },
    "4030": {
      "op": "ADD"
    },
    "4031": {
      "op": "PUSH2",
      "value": "0xC9C"
    },
    "4034": {
      "jump": "i",
      "op": "JUMP"
    },
    "4035": {
      "op": "JUMPDEST"
    },
    "4036": {
      "op": "ADD"
    },
    "4037": {
      "op": "SWAP5"
    },
    "4038": {
      "op": "SWAP4"
    },
    "4039": {
      "op": "POP"
    },
    "4040": {
      "op": "POP"
    },
    "4041": {
      "op": "POP"
    },
    "4042": {
      "op": "POP"
    },
    "4043": {
      "jump": "o",
      "op": "JUMP"
    },
    "4044": {
      "op": "JUMPDEST"
    },
    "4045": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "4047": {
      "op": "DUP1"
    },
    "4048": {
      "op": "DUP3"
    },
    "4049": {
      "op": "MSTORE"
    },
    "4050": {
      "op": "PUSH1",
      "value": "0x25"
    },
    "4052": {
      "op": "SWAP1"
    },
    "4053": {
      "op": "DUP3"
    },
    "4054": {
      "op": "ADD"
    },
    "4055": {
      "op": "MSTORE"
    },
    "4056": {
      "op": "PUSH32",
      "value": "0x4552433732313A207472616E736665722066726F6D20696E636F727265637420"
    },
    "4089": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "4091": {
      "op": "DUP3"
    },
    "4092": {
      "op": "ADD"
    },
    "4093": {
      "op": "MSTORE"
    },
    "4094": {
      "op": "PUSH5",
      "value": "0x37BBB732B9"
    },
    "4100": {
      "op": "PUSH1",
      "value": "0xD9"
    },
    "4102": {
      "op": "SHL"
    },
    "4103": {
      "op": "PUSH1",
      "value": "0x60"
    },
    "4105": {
      "op": "DUP3"
    },
    "4106": {
      "op": "ADD"
    },
    "4107": {
      "op": "MSTORE"
    },
    "4108": {
      "op": "PUSH1",
      "value": "0x80"
    },
    "4110": {
      "op": "ADD"
    },
    "4111": {
      "op": "SWAP1"
    },
    "4112": {
      "jump": "o",
      "op": "JUMP"
    },
    "4113": {
      "op": "JUMPDEST"
    },
    "4114": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "4116": {
      "op": "DUP1"
    },
    "4117": {
      "op": "DUP3"
    },
    "4118": {
      "op": "MSTORE"
    },
    "4119": {
      "op": "PUSH1",
      "value": "0x32"
    },
    "4121": {
      "op": "SWAP1"
    },
    "4122": {
      "op": "DUP3"
    },
    "4123": {
      "op": "ADD"
    },
    "4124": {
      "op": "MSTORE"
    },
    "4125": {
      "op": "PUSH32",
      "value": "0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265"
    },
    "4158": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "4160": {
      "op": "DUP3"
    },
    "4161": {
      "op": "ADD"
    },
    "4162": {
      "op": "MSTORE"
    },
    "4163": {
      "op": "PUSH18",
      "value": "0x31B2B4BB32B91034B6B83632B6B2B73A32B9"
    },
    "4182": {
      "op": "PUSH1",
      "value": "0x71"
    },
    "4184": {
      "op": "SHL"
    },
    "4185": {
      "op": "PUSH1",
      "value": "0x60"
    },
    "4187": {
      "op": "DUP3"
    },
    "4188": {
      "op": "ADD"
    },
    "4189": {
      "op": "MSTORE"
    },
    "4190": {
      "op": "PUSH1",
      "value": "0x80"
    },
    "4192": {
      "op": "ADD"
    },
    "4193": {
      "op": "SWAP1"
    },
    "4194": {
      "jump": "o",
      "op": "JUMP"
    },
    "4195": {
      "op": "JUMPDEST"
    },
    "4196": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "4198": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "4200": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "4202": {
      "op": "SHL"
    },
    "4203": {
      "op": "SUB"
    },
    "4204": {
      "op": "DUP6"
    },
    "4205": {
      "op": "DUP2"
    },
    "4206": {
      "op": "AND"
    },
    "4207": {
      "op": "DUP3"
    },
    "4208": {
      "op": "MSTORE"
    },
    "4209": {
      "op": "DUP5"
    },
    "4210": {
      "op": "AND"
    },
    "4211": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "4213": {
      "op": "DUP3"
    },
    "4214": {
      "op": "ADD"
    },
    "4215": {
      "op": "MSTORE"
    },
    "4216": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "4218": {
      "op": "DUP2"
    },
    "4219": {
      "op": "ADD"
    },
    "4220": {
      "op": "DUP4"
    },
    "4221": {
      "op": "SWAP1"
    },
    "4222": {
      "op": "MSTORE"
    },
    "4223": {
      "op": "PUSH1",
      "value": "0x80"
    },
    "4225": {
      "op": "PUSH1",
      "value": "0x60"
    },
    "4227": {
      "op": "DUP3"
    },
    "4228": {
      "op": "ADD"
    },
    "4229": {
      "op": "DUP2"
    },
    "4230": {
      "op": "SWAP1"
    },
    "4231": {
      "op": "MSTORE"
    },
    "4232": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4234": {
      "op": "SWAP1"
    },
    "4235": {
      "op": "PUSH2",
      "value": "0x1096"
    },
    "4238": {
      "op": "SWAP1"
    },
    "4239": {
      "op": "DUP4"
    },
    "4240": {
      "op": "ADD"
    },
    "4241": {
      "op": "DUP5"
    },
    "4242": {
      "op": "PUSH2",
      "value": "0xCC0"
    },
    "4245": {
      "jump": "i",
      "op": "JUMP"
    },
    "4246": {
      "op": "JUMPDEST"
    },
    "4247": {
      "op": "SWAP7"
    },
    "4248": {
      "op": "SWAP6"
    },
    "4249": {
      "op": "POP"
    },
    "4250": {
      "op": "POP"
    },
    "4251": {
      "op": "POP"
    },
    "4252": {
      "op": "POP"
    },
    "4253": {
      "op": "POP"
    },
    "4254": {
      "op": "POP"
    },
    "4255": {
      "jump": "o",
      "op": "JUMP"
    },
    "4256": {
      "op": "JUMPDEST"
    },
    "4257": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4259": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "4261": {
      "op": "DUP3"
    },
    "4262": {
      "op": "DUP5"
    },
    "4263": {
      "op": "SUB"
    },
    "4264": {
      "op": "SLT"
    },
    "4265": {
      "op": "ISZERO"
    },
    "4266": {
      "op": "PUSH2",
      "value": "0x10B2"
    },
    "4269": {
      "op": "JUMPI"
    },
    "4270": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4272": {
      "op": "DUP1"
    },
    "4273": {
      "op": "REVERT"
    },
    "4274": {
      "op": "JUMPDEST"
    },
    "4275": {
      "op": "DUP2"
    },
    "4276": {
      "op": "MLOAD"
    },
    "4277": {
      "op": "PUSH2",
      "value": "0x642"
    },
    "4280": {
      "op": "DUP2"
    },
    "4281": {
      "op": "PUSH2",
      "value": "0xC69"
    },
    "4284": {
      "jump": "i",
      "op": "JUMP"
    }
  },
  "sha1": "dd93082583f89b89b74333c6283b52fc39c97e68",
  "source": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.2) (token/ERC721/ERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC721.sol\";\nimport \"./IERC721Receiver.sol\";\nimport \"./extensions/IERC721Metadata.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/Context.sol\";\nimport \"../../utils/Strings.sol\";\nimport \"../../utils/introspection/ERC165.sol\";\n\n/**\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\n * {ERC721Enumerable}.\n */\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\n    using Address for address;\n    using Strings for uint256;\n\n    // Token name\n    string private _name;\n\n    // Token symbol\n    string private _symbol;\n\n    // Mapping from token ID to owner address\n    mapping(uint256 => address) private _owners;\n\n    // Mapping owner address to token count\n    mapping(address => uint256) private _balances;\n\n    // Mapping from token ID to approved address\n    mapping(uint256 => address) private _tokenApprovals;\n\n    // Mapping from owner to operator approvals\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n    /**\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\n     */\n    constructor(string memory name_, string memory symbol_) {\n        _name = name_;\n        _symbol = symbol_;\n    }\n\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\n        return\n            interfaceId == type(IERC721).interfaceId ||\n            interfaceId == type(IERC721Metadata).interfaceId ||\n            super.supportsInterface(interfaceId);\n    }\n\n    /**\n     * @dev See {IERC721-balanceOf}.\n     */\n    function balanceOf(address owner) public view virtual override returns (uint256) {\n        require(owner != address(0), \"ERC721: address zero is not a valid owner\");\n        return _balances[owner];\n    }\n\n    /**\n     * @dev See {IERC721-ownerOf}.\n     */\n    function ownerOf(uint256 tokenId) public view virtual override returns (address) {\n        address owner = _ownerOf(tokenId);\n        require(owner != address(0), \"ERC721: invalid token ID\");\n        return owner;\n    }\n\n    /**\n     * @dev See {IERC721Metadata-name}.\n     */\n    function name() public view virtual override returns (string memory) {\n        return _name;\n    }\n\n    /**\n     * @dev See {IERC721Metadata-symbol}.\n     */\n    function symbol() public view virtual override returns (string memory) {\n        return _symbol;\n    }\n\n    /**\n     * @dev See {IERC721Metadata-tokenURI}.\n     */\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n        _requireMinted(tokenId);\n\n        string memory baseURI = _baseURI();\n        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \"\";\n    }\n\n    /**\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n     * by default, can be overridden in child contracts.\n     */\n    function _baseURI() internal view virtual returns (string memory) {\n        return \"\";\n    }\n\n    /**\n     * @dev See {IERC721-approve}.\n     */\n    function approve(address to, uint256 tokenId) public virtual override {\n        address owner = ERC721.ownerOf(tokenId);\n        require(to != owner, \"ERC721: approval to current owner\");\n\n        require(\n            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\n            \"ERC721: approve caller is not token owner or approved for all\"\n        );\n\n        _approve(to, tokenId);\n    }\n\n    /**\n     * @dev See {IERC721-getApproved}.\n     */\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\n        _requireMinted(tokenId);\n\n        return _tokenApprovals[tokenId];\n    }\n\n    /**\n     * @dev See {IERC721-setApprovalForAll}.\n     */\n    function setApprovalForAll(address operator, bool approved) public virtual override {\n        _setApprovalForAll(_msgSender(), operator, approved);\n    }\n\n    /**\n     * @dev See {IERC721-isApprovedForAll}.\n     */\n    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\n        return _operatorApprovals[owner][operator];\n    }\n\n    /**\n     * @dev See {IERC721-transferFrom}.\n     */\n    function transferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) public virtual override {\n        //solhint-disable-next-line max-line-length\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner or approved\");\n\n        _transfer(from, to, tokenId);\n    }\n\n    /**\n     * @dev See {IERC721-safeTransferFrom}.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) public virtual override {\n        safeTransferFrom(from, to, tokenId, \"\");\n    }\n\n    /**\n     * @dev See {IERC721-safeTransferFrom}.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory data\n    ) public virtual override {\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner or approved\");\n        _safeTransfer(from, to, tokenId, data);\n    }\n\n    /**\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n     *\n     * `data` is additional data, it has no specified format and it is sent in call to `to`.\n     *\n     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must exist and be owned by `from`.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _safeTransfer(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory data\n    ) internal virtual {\n        _transfer(from, to, tokenId);\n        require(_checkOnERC721Received(from, to, tokenId, data), \"ERC721: transfer to non ERC721Receiver implementer\");\n    }\n\n    /**\n     * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n     */\n    function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\n        return _owners[tokenId];\n    }\n\n    /**\n     * @dev Returns whether `tokenId` exists.\n     *\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n     *\n     * Tokens start existing when they are minted (`_mint`),\n     * and stop existing when they are burned (`_burn`).\n     */\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\n        return _ownerOf(tokenId) != address(0);\n    }\n\n    /**\n     * @dev Returns whether `spender` is allowed to manage `tokenId`.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\n        address owner = ERC721.ownerOf(tokenId);\n        return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\n    }\n\n    /**\n     * @dev Safely mints `tokenId` and transfers it to `to`.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must not exist.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _safeMint(address to, uint256 tokenId) internal virtual {\n        _safeMint(to, tokenId, \"\");\n    }\n\n    /**\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n     */\n    function _safeMint(\n        address to,\n        uint256 tokenId,\n        bytes memory data\n    ) internal virtual {\n        _mint(to, tokenId);\n        require(\n            _checkOnERC721Received(address(0), to, tokenId, data),\n            \"ERC721: transfer to non ERC721Receiver implementer\"\n        );\n    }\n\n    /**\n     * @dev Mints `tokenId` and transfers it to `to`.\n     *\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n     *\n     * Requirements:\n     *\n     * - `tokenId` must not exist.\n     * - `to` cannot be the zero address.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _mint(address to, uint256 tokenId) internal virtual {\n        require(to != address(0), \"ERC721: mint to the zero address\");\n        require(!_exists(tokenId), \"ERC721: token already minted\");\n\n        _beforeTokenTransfer(address(0), to, tokenId, 1);\n\n        // Check that tokenId was not minted by `_beforeTokenTransfer` hook\n        require(!_exists(tokenId), \"ERC721: token already minted\");\n\n        unchecked {\n            // Will not overflow unless all 2**256 token ids are minted to the same owner.\n            // Given that tokens are minted one by one, it is impossible in practice that\n            // this ever happens. Might change if we allow batch minting.\n            // The ERC fails to describe this case.\n            _balances[to] += 1;\n        }\n\n        _owners[tokenId] = to;\n\n        emit Transfer(address(0), to, tokenId);\n\n        _afterTokenTransfer(address(0), to, tokenId, 1);\n    }\n\n    /**\n     * @dev Destroys `tokenId`.\n     * The approval is cleared when the token is burned.\n     * This is an internal function that does not check if the sender is authorized to operate on the token.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _burn(uint256 tokenId) internal virtual {\n        address owner = ERC721.ownerOf(tokenId);\n\n        _beforeTokenTransfer(owner, address(0), tokenId, 1);\n\n        // Update ownership in case tokenId was transferred by `_beforeTokenTransfer` hook\n        owner = ERC721.ownerOf(tokenId);\n\n        // Clear approvals\n        delete _tokenApprovals[tokenId];\n\n        unchecked {\n            // Cannot overflow, as that would require more tokens to be burned/transferred\n            // out than the owner initially received through minting and transferring in.\n            _balances[owner] -= 1;\n        }\n        delete _owners[tokenId];\n\n        emit Transfer(owner, address(0), tokenId);\n\n        _afterTokenTransfer(owner, address(0), tokenId, 1);\n    }\n\n    /**\n     * @dev Transfers `tokenId` from `from` to `to`.\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must be owned by `from`.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _transfer(\n        address from,\n        address to,\n        uint256 tokenId\n    ) internal virtual {\n        require(ERC721.ownerOf(tokenId) == from, \"ERC721: transfer from incorrect owner\");\n        require(to != address(0), \"ERC721: transfer to the zero address\");\n\n        _beforeTokenTransfer(from, to, tokenId, 1);\n\n        // Check that tokenId was not transferred by `_beforeTokenTransfer` hook\n        require(ERC721.ownerOf(tokenId) == from, \"ERC721: transfer from incorrect owner\");\n\n        // Clear approvals from the previous owner\n        delete _tokenApprovals[tokenId];\n\n        unchecked {\n            // `_balances[from]` cannot overflow for the same reason as described in `_burn`:\n            // `from`'s balance is the number of token held, which is at least one before the current\n            // transfer.\n            // `_balances[to]` could overflow in the conditions described in `_mint`. That would require\n            // all 2**256 token ids to be minted, which in practice is impossible.\n            _balances[from] -= 1;\n            _balances[to] += 1;\n        }\n        _owners[tokenId] = to;\n\n        emit Transfer(from, to, tokenId);\n\n        _afterTokenTransfer(from, to, tokenId, 1);\n    }\n\n    /**\n     * @dev Approve `to` to operate on `tokenId`\n     *\n     * Emits an {Approval} event.\n     */\n    function _approve(address to, uint256 tokenId) internal virtual {\n        _tokenApprovals[tokenId] = to;\n        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);\n    }\n\n    /**\n     * @dev Approve `operator` to operate on all of `owner` tokens\n     *\n     * Emits an {ApprovalForAll} event.\n     */\n    function _setApprovalForAll(\n        address owner,\n        address operator,\n        bool approved\n    ) internal virtual {\n        require(owner != operator, \"ERC721: approve to caller\");\n        _operatorApprovals[owner][operator] = approved;\n        emit ApprovalForAll(owner, operator, approved);\n    }\n\n    /**\n     * @dev Reverts if the `tokenId` has not been minted yet.\n     */\n    function _requireMinted(uint256 tokenId) internal view virtual {\n        require(_exists(tokenId), \"ERC721: invalid token ID\");\n    }\n\n    /**\n     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n     * The call is not executed if the target address is not a contract.\n     *\n     * @param from address representing the previous owner of the given token ID\n     * @param to target address that will receive the tokens\n     * @param tokenId uint256 ID of the token to be transferred\n     * @param data bytes optional data to send along with the call\n     * @return bool whether the call correctly returned the expected magic value\n     */\n    function _checkOnERC721Received(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory data\n    ) private returns (bool) {\n        if (to.isContract()) {\n            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\n                return retval == IERC721Receiver.onERC721Received.selector;\n            } catch (bytes memory reason) {\n                if (reason.length == 0) {\n                    revert(\"ERC721: transfer to non ERC721Receiver implementer\");\n                } else {\n                    /// @solidity memory-safe-assembly\n                    assembly {\n                        revert(add(32, reason), mload(reason))\n                    }\n                }\n            }\n        } else {\n            return true;\n        }\n    }\n\n    /**\n     * @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is\n     * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\n     *\n     * Calling conditions:\n     *\n     * - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.\n     * - When `from` is zero, the tokens will be minted for `to`.\n     * - When `to` is zero, ``from``'s tokens will be burned.\n     * - `from` and `to` are never both zero.\n     * - `batchSize` is non-zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _beforeTokenTransfer(\n        address from,\n        address to,\n        uint256 firstTokenId,\n        uint256 batchSize\n    ) internal virtual {}\n\n    /**\n     * @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is\n     * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\n     *\n     * Calling conditions:\n     *\n     * - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.\n     * - When `from` is zero, the tokens were minted for `to`.\n     * - When `to` is zero, ``from``'s tokens were burned.\n     * - `from` and `to` are never both zero.\n     * - `batchSize` is non-zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _afterTokenTransfer(\n        address from,\n        address to,\n        uint256 firstTokenId,\n        uint256 batchSize\n    ) internal virtual {}\n\n    /**\n     * @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n     *\n     * WARNING: Anyone calling this MUST ensure that the balances remain consistent with the ownership. The invariant\n     * being that for any address `a` the value returned by `balanceOf(a)` must be equal to the number of tokens such\n     * that `ownerOf(tokenId)` is `a`.\n     */\n    // solhint-disable-next-line func-name-mixedcase\n    function __unsafe_increaseBalance(address account, uint256 amount) internal {\n        _balances[account] += amount;\n    }\n}\n",
  "sourceMap": "628:16679:16:-:0;;;1390:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1456:5;:13;1464:5;1456;:13;:::i;:::-;-1:-1:-1;1479:7:16;:17;1489:7;1479;:17;:::i;:::-;;1390:113;;628:16679;;14:127:67;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:67;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:67;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:67:o;991:562::-;1090:6;1098;1151:2;1139:9;1130:7;1126:23;1122:32;1119:52;;;1167:1;1164;1157:12;1119:52;1194:16;;-1:-1:-1;;;;;1259:14:67;;;1256:34;;;1286:1;1283;1276:12;1256:34;1309:61;1362:7;1353:6;1342:9;1338:22;1309:61;:::i;:::-;1299:71;;1416:2;1405:9;1401:18;1395:25;1379:41;;1445:2;1435:8;1432:16;1429:36;;;1461:1;1458;1451:12;1429:36;;1484:63;1539:7;1528:8;1517:9;1513:24;1484:63;:::i;:::-;1474:73;;;991:562;;;;;:::o;1558:380::-;1637:1;1633:12;;;;1680;;;1701:61;;1755:4;1747:6;1743:17;1733:27;;1701:61;1808:2;1800:6;1797:14;1777:18;1774:38;1771:161;;1854:10;1849:3;1845:20;1842:1;1835:31;1889:4;1886:1;1879:15;1917:4;1914:1;1907:15;1771:161;;1558:380;;;:::o;2069:545::-;2171:2;2166:3;2163:11;2160:448;;;2207:1;2232:5;2228:2;2221:17;2277:4;2273:2;2263:19;2347:2;2335:10;2331:19;2328:1;2324:27;2318:4;2314:38;2383:4;2371:10;2368:20;2365:47;;;-1:-1:-1;2406:4:67;2365:47;2461:2;2456:3;2452:12;2449:1;2445:20;2439:4;2435:31;2425:41;;2516:82;2534:2;2527:5;2524:13;2516:82;;;2579:17;;;2560:1;2549:13;2516:82;;;2520:3;;;2160:448;2069:545;;;:::o;2790:1352::-;2910:10;;-1:-1:-1;;;;;2932:30:67;;2929:56;;;2965:18;;:::i;:::-;2994:97;3084:6;3044:38;3076:4;3070:11;3044:38;:::i;:::-;3038:4;2994:97;:::i;:::-;3146:4;;3210:2;3199:14;;3227:1;3222:663;;;;3929:1;3946:6;3943:89;;;-1:-1:-1;3998:19:67;;;3992:26;3943:89;-1:-1:-1;;2747:1:67;2743:11;;;2739:24;2735:29;2725:40;2771:1;2767:11;;;2722:57;4045:81;;3192:944;;3222:663;2016:1;2009:14;;;2053:4;2040:18;;-1:-1:-1;;3258:20:67;;;3376:236;3390:7;3387:1;3384:14;3376:236;;;3479:19;;;3473:26;3458:42;;3571:27;;;;3539:1;3527:14;;;;3406:19;;3376:236;;;3380:3;3640:6;3631:7;3628:19;3625:201;;;3701:19;;;3695:26;-1:-1:-1;;3784:1:67;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:67;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:67:o;:::-;628:16679:16;;;;;;",
  "sourcePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/token/ERC721/ERC721.sol",
  "type": "contract"
}