{
  "contractName": "ERC721Custom",
  "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": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "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": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "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": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "name": "safeMint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.11+commit.d7f03943\"},\"language\":\"Solidity\",\"output\":{\"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\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"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\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"safeMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Burns `tokenId`. See {ERC721-_burn}. Requirements: - The caller must own `tokenId` or be an approved operator.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"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}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/token/ERC721Custom.sol\":\"ERC721Custom\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x24e0364e503a9bbde94c715d26573a76f14cd2a202d45f96f52134ab806b67b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e12cbaa7378fd9b62280e4e1d164bedcb4399ce238f5f98fc0eefb7e50577981\",\"dweb:/ipfs/QmXRoFGUgfsaRkoPT5bxNMtSayKTQ8GZATLPXf69HcRA51\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x11b84bb56dc112a6590bfe3e0efa118aa1b5891132342200d04c4ef544cb93de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cbc4803332d45dff58f865ed21c942fe4668e47cc7196c8dfe84102040b1d70f\",\"dweb:/ipfs/QmXhZLsocznRWCSyhjo3vo66Z1VsuuNptAVb6ASPYsWtGx\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x516a22876c1fab47f49b1bc22b4614491cd05338af8bd2e7b382da090a079990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a439187f7126d31add4557f82d8aed6be0162007cd7182c48fd934dbab8f3849\",\"dweb:/ipfs/QmRPLguRFvrRJS7r6F1bcLvsx6q1VrgjEpZafyeL8D7xZh\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xd5fa74b4fb323776fa4a8158800fec9d5ac0fec0d6dd046dd93798632ada265f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33017a30a99cc5411a9e376622c31fc4a55cfc6a335e2f57f00cbf24a817ff3f\",\"dweb:/ipfs/QmWNQtWTPhA7Lo8nbxbc8KFMvZwbFYB8fSeEQ3vuapSV4a\"]},\"@openzeppelin/contracts/token/ERC721/extensions/ERC721Burnable.sol\":{\"keccak256\":\"0x1f16f9737853b988865ab819d1ebf8b5009defe981c75bc9079e0f40ed2a2e57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05e50f827969ca93b0d7bad1e022aa3147c8f390e9f91bb814752e8fbbbe621c\",\"dweb:/ipfs/QmdR2fJ2a3HM7FyC9pGD4JeKF9z6bxqU9FbhMyQfH1sDJH\"]},\"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"keccak256\":\"0x1cbe42915bc66227970fe99bc0f783eb1de30f2b48f984af01ad45edb9658698\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2baa08eb67d9da46e6c4c049f17b7684a1c68c5268d0f466cfa0eb23ce2bf9b0\",\"dweb:/ipfs/Qmdnj8zj4PfErB2HM2eKmDt7FrqrhggsZ6Qd8MpD593tgj\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a57d0854b2fdce6ebff933a48dca2445643d1eccfc27f00292e937f26c6a58\",\"dweb:/ipfs/QmW45rZooS9TqR4YXUbjRbtf2Bpb5ouSarBvfW1LdGprvV\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8179c356adb19e70d6b31a1eedc8c5c7f0c00e669e2540f4099e3844c6074d30\",\"dweb:/ipfs/QmWFbivarEobbqhS1go64ootVuHfVohBseerYy9FTEd1W2\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"project:/contracts/token/ERC721Custom.sol\":{\"keccak256\":\"0xeaccfb8b741b240b87d4753e4e323421319bec06aab2077ed521a0cb2f4d08a5\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://e351e95ec34fe9fc6eff853a0c78d18af659a8e7d305eb108387437609dc281b\",\"dweb:/ipfs/QmZQ7tYZEbj8jUJNtymRBkgL1a9MLudx4MKt6yQmAcifvQ\"]},\"project:/contracts/token/interfaces/IERC721Custom.sol\":{\"keccak256\":\"0xcfbf99e794852a2c4aa0e0be701ed04ea6515340e9aea7aa314b8bcf3f867719\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://8c1265907aaaea006a6bdf77939e8b7598f482bf00f916253599363ed6309077\",\"dweb:/ipfs/QmVC6Kkx4BhwbGWsf7uXmm57Kx1VAt6TVQTFLhJSMxDwoX\"]}},\"version\":1}",
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162001da438038062001da4833981016040819052620000349162000251565b8151829082906200004d906000906020850190620000de565b50805162000063906001906020840190620000de565b505050620000806200007a6200008860201b60201c565b6200008c565b5050620002f8565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620000ec90620002bb565b90600052602060002090601f0160209004810192826200011057600085556200015b565b82601f106200012b57805160ff19168380011785556200015b565b828001600101855582156200015b579182015b828111156200015b5782518255916020019190600101906200013e565b50620001699291506200016d565b5090565b5b808211156200016957600081556001016200016e565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001ac57600080fd5b81516001600160401b0380821115620001c957620001c962000184565b604051601f8301601f19908116603f01168101908282118183101715620001f457620001f462000184565b816040528381526020925086838588010111156200021157600080fd5b600091505b8382101562000235578582018301518183018401529082019062000216565b83821115620002475760008385830101525b9695505050505050565b600080604083850312156200026557600080fd5b82516001600160401b03808211156200027d57600080fd5b6200028b868387016200019a565b93506020850151915080821115620002a257600080fd5b50620002b1858286016200019a565b9150509250929050565b600181811c90821680620002d057607f821691505b60208210811415620002f257634e487b7160e01b600052602260045260246000fd5b50919050565b611a9c80620003086000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a2578063b88d4fde11610071578063b88d4fde14610239578063c87b56dd1461024c578063cd279c7c1461025f578063e985e9c514610272578063f2fde38b146102ae57600080fd5b8063715018a6146102055780638da5cb5b1461020d57806395d89b411461021e578063a22cb4651461022657600080fd5b806323b872dd116100e957806323b872dd1461019857806342842e0e146101ab57806342966c68146101be5780636352211e146101d157806370a08231146101e457600080fd5b806301ffc9a71461011b57806306fdde0314610143578063081812fc14610158578063095ea7b314610183575b600080fd5b61012e6101293660046114f6565b6102c1565b60405190151581526020015b60405180910390f35b61014b610313565b60405161013a919061156b565b61016b61016636600461157e565b6103a5565b6040516001600160a01b03909116815260200161013a565b6101966101913660046115b3565b610432565b005b6101966101a63660046115dd565b610548565b6101966101b93660046115dd565b61057a565b6101966101cc36600461157e565b610595565b61016b6101df36600461157e565b61060f565b6101f76101f2366004611619565b610686565b60405190815260200161013a565b61019661070d565b6007546001600160a01b031661016b565b61014b610743565b610196610234366004611634565b610752565b6101966102473660046116fc565b610761565b61014b61025a36600461157e565b610799565b61019661026d366004611778565b6107a4565b61012e6102803660046117e3565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6101966102bc366004611619565b6107e2565b60006001600160e01b031982166380ac58cd60e01b14806102f257506001600160e01b03198216635b5e139f60e01b145b8061030d57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461032290611816565b80601f016020809104026020016040519081016040528092919081815260200182805461034e90611816565b801561039b5780601f106103705761010080835404028352916020019161039b565b820191906000526020600020905b81548152906001019060200180831161037e57829003601f168201915b5050505050905090565b60006103b08261087a565b6104165760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600061043d8261060f565b9050806001600160a01b0316836001600160a01b031614156104ab5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161040d565b336001600160a01b03821614806104c757506104c78133610280565b6105395760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161040d565b6105438383610897565b505050565b610553335b82610905565b61056f5760405162461bcd60e51b815260040161040d90611851565b6105438383836109ef565b61054383838360405180602001604052806000815250610761565b61059e3361054d565b6106035760405162461bcd60e51b815260206004820152603060248201527f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760448201526f1b995c881b9bdc88185c1c1c9bdd995960821b606482015260840161040d565b61060c81610b8b565b50565b6000818152600260205260408120546001600160a01b03168061030d5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b606482015260840161040d565b60006001600160a01b0382166106f15760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b606482015260840161040d565b506001600160a01b031660009081526003602052604090205490565b6007546001600160a01b031633146107375760405162461bcd60e51b815260040161040d906118a2565b6107416000610b94565b565b60606001805461032290611816565b61075d338383610be6565b5050565b61076b3383610905565b6107875760405162461bcd60e51b815260040161040d90611851565b61079384848484610cb5565b50505050565b606061030d82610ce8565b6007546001600160a01b031633146107ce5760405162461bcd60e51b815260040161040d906118a2565b6107d88383610e57565b6105438282610e71565b6007546001600160a01b0316331461080c5760405162461bcd60e51b815260040161040d906118a2565b6001600160a01b0381166108715760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161040d565b61060c81610b94565b6000908152600260205260409020546001600160a01b0316151590565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906108cc8261060f565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006109108261087a565b6109715760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161040d565b600061097c8361060f565b9050806001600160a01b0316846001600160a01b031614806109b75750836001600160a01b03166109ac846103a5565b6001600160a01b0316145b806109e757506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316610a028261060f565b6001600160a01b031614610a665760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161040d565b6001600160a01b038216610ac85760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161040d565b610ad3600082610897565b6001600160a01b0383166000908152600360205260408120805460019290610afc9084906118ed565b90915550506001600160a01b0382166000908152600360205260408120805460019290610b2a908490611904565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61060c81610efc565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b03161415610c485760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161040d565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610cc08484846109ef565b610ccc84848484610f3c565b6107935760405162461bcd60e51b815260040161040d9061191c565b6060610cf38261087a565b610d595760405162461bcd60e51b815260206004820152603160248201527f45524337323155524953746f726167653a2055524920717565727920666f72206044820152703737b732bc34b9ba32b73a103a37b5b2b760791b606482015260840161040d565b60008281526006602052604081208054610d7290611816565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9e90611816565b8015610deb5780601f10610dc057610100808354040283529160200191610deb565b820191906000526020600020905b815481529060010190602001808311610dce57829003601f168201915b505050505090506000610e0960408051602081019091526000815290565b9050805160001415610e1c575092915050565b815115610e4e578082604051602001610e3692919061196e565b60405160208183030381529060405292505050919050565b6109e78461103a565b61075d828260405180602001604052806000815250611112565b610e7a8261087a565b610edd5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161040d565b6000828152600660209081526040909120825161054392840190611411565b610f0581611145565b60008181526006602052604090208054610f1e90611816565b15905061060c57600081815260066020526040812061060c91611495565b60006001600160a01b0384163b1561102f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610f8090339089908890889060040161199d565b6020604051808303816000875af1925050508015610fbb575060408051601f3d908101601f19168201909252610fb8918101906119da565b60015b611015573d808015610fe9576040519150601f19603f3d011682016040523d82523d6000602084013e610fee565b606091505b50805161100d5760405162461bcd60e51b815260040161040d9061191c565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506109e7565b506001949350505050565b60606110458261087a565b6110a95760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161040d565b60006110c060408051602081019091526000815290565b905060008151116110e0576040518060200160405280600081525061110b565b806110ea846111e0565b6040516020016110fb92919061196e565b6040516020818303038152906040525b9392505050565b61111c83836112de565b6111296000848484610f3c565b6105435760405162461bcd60e51b815260040161040d9061191c565b60006111508261060f565b905061115d600083610897565b6001600160a01b03811660009081526003602052604081208054600192906111869084906118ed565b909155505060008281526002602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6060816112045750506040805180820190915260018152600360fc1b602082015290565b8160005b811561122e5780611218816119f7565b91506112279050600a83611a28565b9150611208565b60008167ffffffffffffffff81111561124957611249611670565b6040519080825280601f01601f191660200182016040528015611273576020820181803683370190505b5090505b84156109e7576112886001836118ed565b9150611295600a86611a3c565b6112a0906030611904565b60f81b8183815181106112b5576112b5611a50565b60200101906001600160f81b031916908160001a9053506112d7600a86611a28565b9450611277565b6001600160a01b0382166113345760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161040d565b61133d8161087a565b1561138a5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161040d565b6001600160a01b03821660009081526003602052604081208054600192906113b3908490611904565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461141d90611816565b90600052602060002090601f01602090048101928261143f5760008555611485565b82601f1061145857805160ff1916838001178555611485565b82800160010185558215611485579182015b8281111561148557825182559160200191906001019061146a565b506114919291506114cb565b5090565b5080546114a190611816565b6000825580601f106114b1575050565b601f01602090049060005260206000209081019061060c91905b5b8082111561149157600081556001016114cc565b6001600160e01b03198116811461060c57600080fd5b60006020828403121561150857600080fd5b813561110b816114e0565b60005b8381101561152e578181015183820152602001611516565b838111156107935750506000910152565b60008151808452611557816020860160208601611513565b601f01601f19169290920160200192915050565b60208152600061110b602083018461153f565b60006020828403121561159057600080fd5b5035919050565b80356001600160a01b03811681146115ae57600080fd5b919050565b600080604083850312156115c657600080fd5b6115cf83611597565b946020939093013593505050565b6000806000606084860312156115f257600080fd5b6115fb84611597565b925061160960208501611597565b9150604084013590509250925092565b60006020828403121561162b57600080fd5b61110b82611597565b6000806040838503121561164757600080fd5b61165083611597565b91506020830135801515811461166557600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156116a1576116a1611670565b604051601f8501601f19908116603f011681019082821181831017156116c9576116c9611670565b816040528093508581528686860111156116e257600080fd5b858560208301376000602087830101525050509392505050565b6000806000806080858703121561171257600080fd5b61171b85611597565b935061172960208601611597565b925060408501359150606085013567ffffffffffffffff81111561174c57600080fd5b8501601f8101871361175d57600080fd5b61176c87823560208401611686565b91505092959194509250565b60008060006060848603121561178d57600080fd5b61179684611597565b925060208401359150604084013567ffffffffffffffff8111156117b957600080fd5b8401601f810186136117ca57600080fd5b6117d986823560208401611686565b9150509250925092565b600080604083850312156117f657600080fd5b6117ff83611597565b915061180d60208401611597565b90509250929050565b600181811c9082168061182a57607f821691505b6020821081141561184b57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000828210156118ff576118ff6118d7565b500390565b60008219821115611917576119176118d7565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008351611980818460208801611513565b835190830190611994818360208801611513565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906119d09083018461153f565b9695505050505050565b6000602082840312156119ec57600080fd5b815161110b816114e0565b6000600019821415611a0b57611a0b6118d7565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082611a3757611a37611a12565b500490565b600082611a4b57611a4b611a12565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220db11f95f0a83531a0d6fe04d905db2cf0289c08dd5cf5af750ff808c3dd34eb664736f6c634300080b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a2578063b88d4fde11610071578063b88d4fde14610239578063c87b56dd1461024c578063cd279c7c1461025f578063e985e9c514610272578063f2fde38b146102ae57600080fd5b8063715018a6146102055780638da5cb5b1461020d57806395d89b411461021e578063a22cb4651461022657600080fd5b806323b872dd116100e957806323b872dd1461019857806342842e0e146101ab57806342966c68146101be5780636352211e146101d157806370a08231146101e457600080fd5b806301ffc9a71461011b57806306fdde0314610143578063081812fc14610158578063095ea7b314610183575b600080fd5b61012e6101293660046114f6565b6102c1565b60405190151581526020015b60405180910390f35b61014b610313565b60405161013a919061156b565b61016b61016636600461157e565b6103a5565b6040516001600160a01b03909116815260200161013a565b6101966101913660046115b3565b610432565b005b6101966101a63660046115dd565b610548565b6101966101b93660046115dd565b61057a565b6101966101cc36600461157e565b610595565b61016b6101df36600461157e565b61060f565b6101f76101f2366004611619565b610686565b60405190815260200161013a565b61019661070d565b6007546001600160a01b031661016b565b61014b610743565b610196610234366004611634565b610752565b6101966102473660046116fc565b610761565b61014b61025a36600461157e565b610799565b61019661026d366004611778565b6107a4565b61012e6102803660046117e3565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6101966102bc366004611619565b6107e2565b60006001600160e01b031982166380ac58cd60e01b14806102f257506001600160e01b03198216635b5e139f60e01b145b8061030d57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461032290611816565b80601f016020809104026020016040519081016040528092919081815260200182805461034e90611816565b801561039b5780601f106103705761010080835404028352916020019161039b565b820191906000526020600020905b81548152906001019060200180831161037e57829003601f168201915b5050505050905090565b60006103b08261087a565b6104165760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600061043d8261060f565b9050806001600160a01b0316836001600160a01b031614156104ab5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161040d565b336001600160a01b03821614806104c757506104c78133610280565b6105395760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161040d565b6105438383610897565b505050565b610553335b82610905565b61056f5760405162461bcd60e51b815260040161040d90611851565b6105438383836109ef565b61054383838360405180602001604052806000815250610761565b61059e3361054d565b6106035760405162461bcd60e51b815260206004820152603060248201527f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760448201526f1b995c881b9bdc88185c1c1c9bdd995960821b606482015260840161040d565b61060c81610b8b565b50565b6000818152600260205260408120546001600160a01b03168061030d5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b606482015260840161040d565b60006001600160a01b0382166106f15760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b606482015260840161040d565b506001600160a01b031660009081526003602052604090205490565b6007546001600160a01b031633146107375760405162461bcd60e51b815260040161040d906118a2565b6107416000610b94565b565b60606001805461032290611816565b61075d338383610be6565b5050565b61076b3383610905565b6107875760405162461bcd60e51b815260040161040d90611851565b61079384848484610cb5565b50505050565b606061030d82610ce8565b6007546001600160a01b031633146107ce5760405162461bcd60e51b815260040161040d906118a2565b6107d88383610e57565b6105438282610e71565b6007546001600160a01b0316331461080c5760405162461bcd60e51b815260040161040d906118a2565b6001600160a01b0381166108715760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161040d565b61060c81610b94565b6000908152600260205260409020546001600160a01b0316151590565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906108cc8261060f565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006109108261087a565b6109715760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161040d565b600061097c8361060f565b9050806001600160a01b0316846001600160a01b031614806109b75750836001600160a01b03166109ac846103a5565b6001600160a01b0316145b806109e757506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316610a028261060f565b6001600160a01b031614610a665760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161040d565b6001600160a01b038216610ac85760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161040d565b610ad3600082610897565b6001600160a01b0383166000908152600360205260408120805460019290610afc9084906118ed565b90915550506001600160a01b0382166000908152600360205260408120805460019290610b2a908490611904565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61060c81610efc565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b03161415610c485760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161040d565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610cc08484846109ef565b610ccc84848484610f3c565b6107935760405162461bcd60e51b815260040161040d9061191c565b6060610cf38261087a565b610d595760405162461bcd60e51b815260206004820152603160248201527f45524337323155524953746f726167653a2055524920717565727920666f72206044820152703737b732bc34b9ba32b73a103a37b5b2b760791b606482015260840161040d565b60008281526006602052604081208054610d7290611816565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9e90611816565b8015610deb5780601f10610dc057610100808354040283529160200191610deb565b820191906000526020600020905b815481529060010190602001808311610dce57829003601f168201915b505050505090506000610e0960408051602081019091526000815290565b9050805160001415610e1c575092915050565b815115610e4e578082604051602001610e3692919061196e565b60405160208183030381529060405292505050919050565b6109e78461103a565b61075d828260405180602001604052806000815250611112565b610e7a8261087a565b610edd5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161040d565b6000828152600660209081526040909120825161054392840190611411565b610f0581611145565b60008181526006602052604090208054610f1e90611816565b15905061060c57600081815260066020526040812061060c91611495565b60006001600160a01b0384163b1561102f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610f8090339089908890889060040161199d565b6020604051808303816000875af1925050508015610fbb575060408051601f3d908101601f19168201909252610fb8918101906119da565b60015b611015573d808015610fe9576040519150601f19603f3d011682016040523d82523d6000602084013e610fee565b606091505b50805161100d5760405162461bcd60e51b815260040161040d9061191c565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506109e7565b506001949350505050565b60606110458261087a565b6110a95760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161040d565b60006110c060408051602081019091526000815290565b905060008151116110e0576040518060200160405280600081525061110b565b806110ea846111e0565b6040516020016110fb92919061196e565b6040516020818303038152906040525b9392505050565b61111c83836112de565b6111296000848484610f3c565b6105435760405162461bcd60e51b815260040161040d9061191c565b60006111508261060f565b905061115d600083610897565b6001600160a01b03811660009081526003602052604081208054600192906111869084906118ed565b909155505060008281526002602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6060816112045750506040805180820190915260018152600360fc1b602082015290565b8160005b811561122e5780611218816119f7565b91506112279050600a83611a28565b9150611208565b60008167ffffffffffffffff81111561124957611249611670565b6040519080825280601f01601f191660200182016040528015611273576020820181803683370190505b5090505b84156109e7576112886001836118ed565b9150611295600a86611a3c565b6112a0906030611904565b60f81b8183815181106112b5576112b5611a50565b60200101906001600160f81b031916908160001a9053506112d7600a86611a28565b9450611277565b6001600160a01b0382166113345760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161040d565b61133d8161087a565b1561138a5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161040d565b6001600160a01b03821660009081526003602052604081208054600192906113b3908490611904565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461141d90611816565b90600052602060002090601f01602090048101928261143f5760008555611485565b82601f1061145857805160ff1916838001178555611485565b82800160010185558215611485579182015b8281111561148557825182559160200191906001019061146a565b506114919291506114cb565b5090565b5080546114a190611816565b6000825580601f106114b1575050565b601f01602090049060005260206000209081019061060c91905b5b8082111561149157600081556001016114cc565b6001600160e01b03198116811461060c57600080fd5b60006020828403121561150857600080fd5b813561110b816114e0565b60005b8381101561152e578181015183820152602001611516565b838111156107935750506000910152565b60008151808452611557816020860160208601611513565b601f01601f19169290920160200192915050565b60208152600061110b602083018461153f565b60006020828403121561159057600080fd5b5035919050565b80356001600160a01b03811681146115ae57600080fd5b919050565b600080604083850312156115c657600080fd5b6115cf83611597565b946020939093013593505050565b6000806000606084860312156115f257600080fd5b6115fb84611597565b925061160960208501611597565b9150604084013590509250925092565b60006020828403121561162b57600080fd5b61110b82611597565b6000806040838503121561164757600080fd5b61165083611597565b91506020830135801515811461166557600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156116a1576116a1611670565b604051601f8501601f19908116603f011681019082821181831017156116c9576116c9611670565b816040528093508581528686860111156116e257600080fd5b858560208301376000602087830101525050509392505050565b6000806000806080858703121561171257600080fd5b61171b85611597565b935061172960208601611597565b925060408501359150606085013567ffffffffffffffff81111561174c57600080fd5b8501601f8101871361175d57600080fd5b61176c87823560208401611686565b91505092959194509250565b60008060006060848603121561178d57600080fd5b61179684611597565b925060208401359150604084013567ffffffffffffffff8111156117b957600080fd5b8401601f810186136117ca57600080fd5b6117d986823560208401611686565b9150509250925092565b600080604083850312156117f657600080fd5b6117ff83611597565b915061180d60208401611597565b90509250929050565b600181811c9082168061182a57607f821691505b6020821081141561184b57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000828210156118ff576118ff6118d7565b500390565b60008219821115611917576119176118d7565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008351611980818460208801611513565b835190830190611994818360208801611513565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906119d09083018461153f565b9695505050505050565b6000602082840312156119ec57600080fd5b815161110b816114e0565b6000600019821415611a0b57611a0b6118d7565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082611a3757611a37611a12565b500490565b600082611a4b57611a4b611a12565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220db11f95f0a83531a0d6fe04d905db2cf0289c08dd5cf5af750ff808c3dd34eb664736f6c634300080b0033",
  "immutableReferences": {},
  "generatedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:1985:56",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:56",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "46:95:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "63:1:56",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "70:3:56",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "75:10:56",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "66:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "66:20:56"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "56:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "56:31:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "56:31:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "103:1:56",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "106:4:56",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "96:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "96:15:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "96:15:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "127:1:56",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "130:4:56",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "120:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "120:15:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "120:15:56"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nodeType": "YulFunctionDefinition",
            "src": "14:127:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "210:821:56",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "259:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "268:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "271:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "261:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "261:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "261:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "238:6:56"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "246:4:56",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "234:3:56"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "234:17:56"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "253:3:56"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "230:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "230:27:56"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "223:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "223:35:56"
                  },
                  "nodeType": "YulIf",
                  "src": "220:55:56"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "284:23:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "300:6:56"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "294:5:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "294:13:56"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "288:2:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "316:28:56",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "334:2:56",
                            "type": "",
                            "value": "64"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "338:1:56",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "330:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "330:10:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "342:1:56",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "326:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "326:18:56"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "320:2:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "367:22:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "369:16:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "369:18:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "369:18:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "359:2:56"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "363:2:56"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "356:2:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "356:10:56"
                  },
                  "nodeType": "YulIf",
                  "src": "353:36:56"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "398:17:56",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "412:2:56",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "not",
                      "nodeType": "YulIdentifier",
                      "src": "408:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "408:7:56"
                  },
                  "variables": [
                    {
                      "name": "_3",
                      "nodeType": "YulTypedName",
                      "src": "402:2:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "424:23:56",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "444:2:56",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "438:5:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "438:9:56"
                  },
                  "variables": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulTypedName",
                      "src": "428:6:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "456:71:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "478:6:56"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "502:2:56"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "506:4:56",
                                        "type": "",
                                        "value": "0x1f"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "498:3:56"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "498:13:56"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "513:2:56"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "494:3:56"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "494:22:56"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "518:2:56",
                                "type": "",
                                "value": "63"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "490:3:56"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "490:31:56"
                          },
                          {
                            "name": "_3",
                            "nodeType": "YulIdentifier",
                            "src": "523:2:56"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "486:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "486:40:56"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "474:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "474:53:56"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nodeType": "YulTypedName",
                      "src": "460:10:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "586:22:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "588:16:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "588:18:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "588:18:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "545:10:56"
                          },
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "557:2:56"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "542:2:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "542:18:56"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "565:10:56"
                          },
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "577:6:56"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "562:2:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "562:22:56"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "539:2:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "539:46:56"
                  },
                  "nodeType": "YulIf",
                  "src": "536:72:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "624:2:56",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nodeType": "YulIdentifier",
                        "src": "628:10:56"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "617:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "617:22:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "617:22:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "655:6:56"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "663:2:56"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "648:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "648:18:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "648:18:56"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "675:14:56",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "685:4:56",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "_4",
                      "nodeType": "YulTypedName",
                      "src": "679:2:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "735:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "744:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "747:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "737:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "737:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "737:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "712:6:56"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "720:2:56"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "708:3:56"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "708:15:56"
                          },
                          {
                            "name": "_4",
                            "nodeType": "YulIdentifier",
                            "src": "725:2:56"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "704:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "704:24:56"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "730:3:56"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "701:2:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "701:33:56"
                  },
                  "nodeType": "YulIf",
                  "src": "698:53:56"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "760:10:56",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "769:1:56",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "764:1:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "825:87:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "memPtr",
                                      "nodeType": "YulIdentifier",
                                      "src": "854:6:56"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "862:1:56"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "850:3:56"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "850:14:56"
                                },
                                {
                                  "name": "_4",
                                  "nodeType": "YulIdentifier",
                                  "src": "866:2:56"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "846:3:56"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "846:23:56"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "name": "offset",
                                          "nodeType": "YulIdentifier",
                                          "src": "885:6:56"
                                        },
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "893:1:56"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "881:3:56"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "881:14:56"
                                    },
                                    {
                                      "name": "_4",
                                      "nodeType": "YulIdentifier",
                                      "src": "897:2:56"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "877:3:56"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "877:23:56"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "871:5:56"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "871:30:56"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "839:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "839:63:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "839:63:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "790:1:56"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "793:2:56"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "787:2:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "787:9:56"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "797:19:56",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "799:15:56",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "808:1:56"
                            },
                            {
                              "name": "_4",
                              "nodeType": "YulIdentifier",
                              "src": "811:2:56"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "804:3:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "804:10:56"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "799:1:56"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "783:3:56",
                    "statements": []
                  },
                  "src": "779:133:56"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "942:59:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "memPtr",
                                      "nodeType": "YulIdentifier",
                                      "src": "971:6:56"
                                    },
                                    {
                                      "name": "_1",
                                      "nodeType": "YulIdentifier",
                                      "src": "979:2:56"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "967:3:56"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "967:15:56"
                                },
                                {
                                  "name": "_4",
                                  "nodeType": "YulIdentifier",
                                  "src": "984:2:56"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "963:3:56"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "963:24:56"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "989:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "956:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "956:35:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "956:35:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "927:1:56"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "930:2:56"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "924:2:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "924:9:56"
                  },
                  "nodeType": "YulIf",
                  "src": "921:80:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1010:15:56",
                  "value": {
                    "name": "memPtr",
                    "nodeType": "YulIdentifier",
                    "src": "1019:6:56"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "1010:5:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_string_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "184:6:56",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "192:3:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "200:5:56",
                "type": ""
              }
            ],
            "src": "146:885:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1154:444:56",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1200:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1209:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1212:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1202:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1202:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1202:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1175:7:56"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1184:9:56"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1171:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1171:23:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1196:2:56",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1167:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1167:32:56"
                  },
                  "nodeType": "YulIf",
                  "src": "1164:52:56"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1225:30:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1245:9:56"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "1239:5:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1239:16:56"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "1229:6:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1264:28:56",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1282:2:56",
                            "type": "",
                            "value": "64"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1286:1:56",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "1278:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1278:10:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1290:1:56",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "1274:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1274:18:56"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "1268:2:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1319:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1328:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1331:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1321:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1321:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1321:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "1307:6:56"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "1315:2:56"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1304:2:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1304:14:56"
                  },
                  "nodeType": "YulIf",
                  "src": "1301:34:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1344:71:56",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1387:9:56"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "1398:6:56"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1383:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1383:22:56"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "1407:7:56"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "1354:28:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1354:61:56"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "1344:6:56"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1424:41:56",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1450:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1461:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1446:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1446:18:56"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "1440:5:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1440:25:56"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "1428:8:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1494:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1503:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1506:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1496:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1496:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1496:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "1480:8:56"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "1490:2:56"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1477:2:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1477:16:56"
                  },
                  "nodeType": "YulIf",
                  "src": "1474:36:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1519:73:56",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1562:9:56"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "1573:8:56"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1558:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1558:24:56"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "1584:7:56"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "1529:28:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1529:63:56"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "1519:6:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1112:9:56",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1123:7:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1135:6:56",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "1143:6:56",
                "type": ""
              }
            ],
            "src": "1036:562:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1658:325:56",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "1668:22:56",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1682:1:56",
                        "type": "",
                        "value": "1"
                      },
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "1685:4:56"
                      }
                    ],
                    "functionName": {
                      "name": "shr",
                      "nodeType": "YulIdentifier",
                      "src": "1678:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1678:12:56"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "1668:6:56"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1699:38:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "1729:4:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1735:1:56",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "1725:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1725:12:56"
                  },
                  "variables": [
                    {
                      "name": "outOfPlaceEncoding",
                      "nodeType": "YulTypedName",
                      "src": "1703:18:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1776:31:56",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "1778:27:56",
                        "value": {
                          "arguments": [
                            {
                              "name": "length",
                              "nodeType": "YulIdentifier",
                              "src": "1792:6:56"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1800:4:56",
                              "type": "",
                              "value": "0x7f"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nodeType": "YulIdentifier",
                            "src": "1788:3:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1788:17:56"
                        },
                        "variableNames": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "1778:6:56"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "1756:18:56"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "1749:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1749:26:56"
                  },
                  "nodeType": "YulIf",
                  "src": "1746:61:56"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1866:111:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1887:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1894:3:56",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "1899:10:56",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "1890:3:56"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1890:20:56"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "1880:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1880:31:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1880:31:56"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1931:1:56",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1934:4:56",
                              "type": "",
                              "value": "0x22"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "1924:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1924:15:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1924:15:56"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1959:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1962:4:56",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1952:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1952:15:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1952:15:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "1822:18:56"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "1845:6:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1853:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "1842:2:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1842:14:56"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "1819:2:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1819:38:56"
                  },
                  "nodeType": "YulIf",
                  "src": "1816:161:56"
                }
              ]
            },
            "name": "extract_byte_array_length",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "1638:4:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "1647:6:56",
                "type": ""
              }
            ],
            "src": "1603:380:56"
          }
        ]
      },
      "contents": "{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_string_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        let _2 := sub(shl(64, 1), 1)\n        if gt(_1, _2) { panic_error_0x41() }\n        let _3 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _1)\n        let _4 := 0x20\n        if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _1) { i := add(i, _4) }\n        {\n            mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n        }\n        if gt(i, _1)\n        {\n            mstore(add(add(memPtr, _1), _4), 0)\n        }\n        array := memPtr\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n}",
      "id": 56,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:15806:56",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:56",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "58:87:56",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "123:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "132:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "135:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "125:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "125:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "125:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "81:5:56"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "92:5:56"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "103:3:56",
                                    "type": "",
                                    "value": "224"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "108:10:56",
                                    "type": "",
                                    "value": "0xffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "99:3:56"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "99:20:56"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "88:3:56"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "88:32:56"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "78:2:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "78:43:56"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "71:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "71:51:56"
                  },
                  "nodeType": "YulIf",
                  "src": "68:71:56"
                }
              ]
            },
            "name": "validator_revert_bytes4",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "47:5:56",
                "type": ""
              }
            ],
            "src": "14:131:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "219:176:56",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "265:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "274:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "277:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "267:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "267:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "267:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "240:7:56"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "249:9:56"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "236:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "236:23:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "261:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "232:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "232:32:56"
                  },
                  "nodeType": "YulIf",
                  "src": "229:52:56"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "290:36:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "316:9:56"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "303:12:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "303:23:56"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "294:5:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "359:5:56"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_bytes4",
                      "nodeType": "YulIdentifier",
                      "src": "335:23:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "335:30:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "335:30:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "374:15:56",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "384:5:56"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "374:6:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes4",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "185:9:56",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "196:7:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "208:6:56",
                "type": ""
              }
            ],
            "src": "150:245:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "495:92:56",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "505:26:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "517:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "528:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "513:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "513:18:56"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "505:4:56"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "547:9:56"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "572:6:56"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "565:6:56"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "565:14:56"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "558:6:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "558:22:56"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "540:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "540:41:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "540:41:56"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "464:9:56",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "475:6:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "486:4:56",
                "type": ""
              }
            ],
            "src": "400:187:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "645:205:56",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "655:10:56",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "664:1:56",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "659:1:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "724:63:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "749:3:56"
                                },
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "754:1:56"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "745:3:56"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "745:11:56"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "src",
                                      "nodeType": "YulIdentifier",
                                      "src": "768:3:56"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "773:1:56"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "764:3:56"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "764:11:56"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "758:5:56"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "758:18:56"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "738:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "738:39:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "738:39:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "685:1:56"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "688:6:56"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "682:2:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "682:13:56"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "696:19:56",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "698:15:56",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "707:1:56"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "710:2:56",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "703:3:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "703:10:56"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "698:1:56"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "678:3:56",
                    "statements": []
                  },
                  "src": "674:113:56"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "813:31:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "826:3:56"
                                },
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "831:6:56"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "822:3:56"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "822:16:56"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "840:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "815:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "815:27:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "815:27:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "802:1:56"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "805:6:56"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "799:2:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "799:13:56"
                  },
                  "nodeType": "YulIf",
                  "src": "796:48:56"
                }
              ]
            },
            "name": "copy_memory_to_memory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "623:3:56",
                "type": ""
              },
              {
                "name": "dst",
                "nodeType": "YulTypedName",
                "src": "628:3:56",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "633:6:56",
                "type": ""
              }
            ],
            "src": "592:258:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "905:208:56",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "915:26:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "935:5:56"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "929:5:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "929:12:56"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "919:6:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "957:3:56"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "962:6:56"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "950:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "950:19:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "950:19:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "1004:5:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1011:4:56",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1000:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1000:16:56"
                      },
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "1022:3:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1027:4:56",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1018:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1018:14:56"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "1034:6:56"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory",
                      "nodeType": "YulIdentifier",
                      "src": "978:21:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "978:63:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "978:63:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1050:57:56",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "1065:3:56"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1078:6:56"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1086:2:56",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1074:3:56"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1074:15:56"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1095:2:56",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "1091:3:56"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1091:7:56"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "1070:3:56"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1070:29:56"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1061:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1061:39:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1102:4:56",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1057:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1057:50:56"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "1050:3:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_string",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "882:5:56",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "889:3:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "897:3:56",
                "type": ""
              }
            ],
            "src": "855:258:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1239:99:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1256:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1267:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1249:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1249:21:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1249:21:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1279:53:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "1305:6:56"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1317:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1328:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1313:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1313:18:56"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nodeType": "YulIdentifier",
                      "src": "1287:17:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1287:45:56"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "1279:4:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1208:9:56",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1219:6:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "1230:4:56",
                "type": ""
              }
            ],
            "src": "1118:220:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1413:110:56",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1459:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1468:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1471:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1461:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1461:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1461:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1434:7:56"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1443:9:56"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1430:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1430:23:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1455:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1426:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1426:32:56"
                  },
                  "nodeType": "YulIf",
                  "src": "1423:52:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1484:33:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1507:9:56"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1494:12:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1494:23:56"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "1484:6:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1379:9:56",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1390:7:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1402:6:56",
                "type": ""
              }
            ],
            "src": "1343:180:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1629:102:56",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "1639:26:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1651:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1662:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1647:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1647:18:56"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "1639:4:56"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1681:9:56"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "1696:6:56"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1712:3:56",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1717:1:56",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "1708:3:56"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1708:11:56"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1721:1:56",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "1704:3:56"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1704:19:56"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "1692:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1692:32:56"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1674:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1674:51:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1674:51:56"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1598:9:56",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1609:6:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "1620:4:56",
                "type": ""
              }
            ],
            "src": "1528:203:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1785:124:56",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "1795:29:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "1817:6:56"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1804:12:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1804:20:56"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "1795:5:56"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1887:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1896:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1899:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1889:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1889:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1889:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "1846:5:56"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1857:5:56"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1872:3:56",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1877:1:56",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "1868:3:56"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1868:11:56"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1881:1:56",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "1864:3:56"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1864:19:56"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "1853:3:56"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1853:31:56"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "1843:2:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1843:42:56"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "1836:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1836:50:56"
                  },
                  "nodeType": "YulIf",
                  "src": "1833:70:56"
                }
              ]
            },
            "name": "abi_decode_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "1764:6:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "1775:5:56",
                "type": ""
              }
            ],
            "src": "1736:173:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2001:167:56",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2047:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2056:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2059:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2049:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2049:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2049:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2022:7:56"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2031:9:56"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2018:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2018:23:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2043:2:56",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2014:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2014:32:56"
                  },
                  "nodeType": "YulIf",
                  "src": "2011:52:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2072:39:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2101:9:56"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "2082:18:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2082:29:56"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "2072:6:56"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2120:42:56",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2147:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2158:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2143:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2143:18:56"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2130:12:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2130:32:56"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "2120:6:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1959:9:56",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1970:7:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1982:6:56",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "1990:6:56",
                "type": ""
              }
            ],
            "src": "1914:254:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2277:224:56",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2323:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2332:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2335:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2325:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2325:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2325:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2298:7:56"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2307:9:56"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2294:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2294:23:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2319:2:56",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2290:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2290:32:56"
                  },
                  "nodeType": "YulIf",
                  "src": "2287:52:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2348:39:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2377:9:56"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "2358:18:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2358:29:56"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "2348:6:56"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2396:48:56",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2429:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2440:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2425:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2425:18:56"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "2406:18:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2406:38:56"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "2396:6:56"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2453:42:56",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2480:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2491:2:56",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2476:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2476:18:56"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2463:12:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2463:32:56"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "2453:6:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2227:9:56",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2238:7:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2250:6:56",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "2258:6:56",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "2266:6:56",
                "type": ""
              }
            ],
            "src": "2173:328:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2576:116:56",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2622:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2631:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2634:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2624:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2624:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2624:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2597:7:56"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2606:9:56"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2593:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2593:23:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2618:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2589:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2589:32:56"
                  },
                  "nodeType": "YulIf",
                  "src": "2586:52:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2647:39:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2676:9:56"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "2657:18:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2657:29:56"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "2647:6:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2542:9:56",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2553:7:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2565:6:56",
                "type": ""
              }
            ],
            "src": "2506:186:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2798:76:56",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "2808:26:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2820:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2831:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "2816:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2816:18:56"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "2808:4:56"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2850:9:56"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "2861:6:56"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2843:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2843:25:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2843:25:56"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2767:9:56",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2778:6:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "2789:4:56",
                "type": ""
              }
            ],
            "src": "2697:177:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2963:263:56",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3009:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3018:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3021:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3011:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3011:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3011:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2984:7:56"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2993:9:56"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2980:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2980:23:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3005:2:56",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2976:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2976:32:56"
                  },
                  "nodeType": "YulIf",
                  "src": "2973:52:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3034:39:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3063:9:56"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "3044:18:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3044:29:56"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "3034:6:56"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3082:45:56",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3112:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3123:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3108:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3108:18:56"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3095:12:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3095:32:56"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "3086:5:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3180:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3189:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3192:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3182:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3182:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3182:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "3149:5:56"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3170:5:56"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3163:6:56"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3163:13:56"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "3156:6:56"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3156:21:56"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "3146:2:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3146:32:56"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "3139:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3139:40:56"
                  },
                  "nodeType": "YulIf",
                  "src": "3136:60:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3205:15:56",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "3215:5:56"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "3205:6:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_bool",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2921:9:56",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2932:7:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2944:6:56",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "2952:6:56",
                "type": ""
              }
            ],
            "src": "2879:347:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3263:95:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3280:1:56",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3287:3:56",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3292:10:56",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "3283:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3283:20:56"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3273:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3273:31:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3273:31:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3320:1:56",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3323:4:56",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3313:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3313:15:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3313:15:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3344:1:56",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3347:4:56",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "3337:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3337:15:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3337:15:56"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nodeType": "YulFunctionDefinition",
            "src": "3231:127:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3437:557:56",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3447:28:56",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "3457:18:56",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "3451:2:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3502:22:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "3504:16:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3504:18:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3504:18:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "3490:6:56"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "3498:2:56"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3487:2:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3487:14:56"
                  },
                  "nodeType": "YulIf",
                  "src": "3484:40:56"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3533:17:56",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3547:2:56",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "not",
                      "nodeType": "YulIdentifier",
                      "src": "3543:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3543:7:56"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "3537:2:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3559:23:56",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3579:2:56",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "3573:5:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3573:9:56"
                  },
                  "variables": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulTypedName",
                      "src": "3563:6:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3591:73:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "3613:6:56"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "3637:6:56"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3645:2:56",
                                        "type": "",
                                        "value": "31"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3633:3:56"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3633:15:56"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3650:2:56"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "3629:3:56"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3629:24:56"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3655:2:56",
                                "type": "",
                                "value": "63"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "3625:3:56"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3625:33:56"
                          },
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "3660:2:56"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "3621:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3621:42:56"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3609:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3609:55:56"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nodeType": "YulTypedName",
                      "src": "3595:10:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3723:22:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "3725:16:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3725:18:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3725:18:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "3682:10:56"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "3694:2:56"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "3679:2:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3679:18:56"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "3702:10:56"
                          },
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "3714:6:56"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "3699:2:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3699:22:56"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "3676:2:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3676:46:56"
                  },
                  "nodeType": "YulIf",
                  "src": "3673:72:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3761:2:56",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nodeType": "YulIdentifier",
                        "src": "3765:10:56"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3754:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3754:22:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3754:22:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3785:15:56",
                  "value": {
                    "name": "memPtr",
                    "nodeType": "YulIdentifier",
                    "src": "3794:6:56"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "3785:5:56"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "3816:6:56"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "3824:6:56"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3809:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3809:22:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3809:22:56"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3869:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3878:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3881:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3871:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3871:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3871:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "src",
                            "nodeType": "YulIdentifier",
                            "src": "3850:3:56"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "3855:6:56"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3846:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3846:16:56"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "3864:3:56"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3843:2:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3843:25:56"
                  },
                  "nodeType": "YulIf",
                  "src": "3840:45:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "3911:6:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3919:4:56",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3907:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3907:17:56"
                      },
                      {
                        "name": "src",
                        "nodeType": "YulIdentifier",
                        "src": "3926:3:56"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "3931:6:56"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "3894:12:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3894:44:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3894:44:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "3962:6:56"
                              },
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "3970:6:56"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "3958:3:56"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3958:19:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3979:4:56",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3954:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3954:30:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3986:1:56",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3947:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3947:41:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3947:41:56"
                }
              ]
            },
            "name": "abi_decode_available_length_bytes",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "3406:3:56",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "3411:6:56",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "3419:3:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "3427:5:56",
                "type": ""
              }
            ],
            "src": "3363:631:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4129:536:56",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4176:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4185:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4188:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4178:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4178:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4178:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4150:7:56"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4159:9:56"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "4146:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4146:23:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4171:3:56",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "4142:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4142:33:56"
                  },
                  "nodeType": "YulIf",
                  "src": "4139:53:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4201:39:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4230:9:56"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "4211:18:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4211:29:56"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "4201:6:56"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4249:48:56",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4282:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4293:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4278:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4278:18:56"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "4259:18:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4259:38:56"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "4249:6:56"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4306:42:56",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4333:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4344:2:56",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4329:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4329:18:56"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4316:12:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4316:32:56"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "4306:6:56"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4357:46:56",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4388:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4399:2:56",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4384:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4384:18:56"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4371:12:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4371:32:56"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "4361:6:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4446:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4455:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4458:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4448:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4448:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4448:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "4418:6:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4426:18:56",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "4415:2:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4415:30:56"
                  },
                  "nodeType": "YulIf",
                  "src": "4412:50:56"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4471:32:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4485:9:56"
                      },
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "4496:6:56"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4481:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4481:22:56"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "4475:2:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4551:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4560:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4563:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4553:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4553:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4553:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "4530:2:56"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4534:4:56",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "4526:3:56"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4526:13:56"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4541:7:56"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "4522:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4522:27:56"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "4515:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4515:35:56"
                  },
                  "nodeType": "YulIf",
                  "src": "4512:55:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4576:83:56",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "4624:2:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4628:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4620:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4620:11:56"
                      },
                      {
                        "arguments": [
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "4646:2:56"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "4633:12:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4633:16:56"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "4651:7:56"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_available_length_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "4586:33:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4586:73:56"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "4576:6:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4071:9:56",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "4082:7:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4094:6:56",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "4102:6:56",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "4110:6:56",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "4118:6:56",
                "type": ""
              }
            ],
            "src": "3999:666:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4784:478:56",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4830:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4839:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4842:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4832:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4832:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4832:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4805:7:56"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4814:9:56"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "4801:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4801:23:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4826:2:56",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "4797:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4797:32:56"
                  },
                  "nodeType": "YulIf",
                  "src": "4794:52:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4855:39:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4884:9:56"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "4865:18:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4865:29:56"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "4855:6:56"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4903:42:56",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4930:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4941:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4926:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4926:18:56"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4913:12:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4913:32:56"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "4903:6:56"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4954:46:56",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4985:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4996:2:56",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4981:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4981:18:56"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4968:12:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4968:32:56"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "4958:6:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5043:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5052:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5055:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5045:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5045:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5045:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "5015:6:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5023:18:56",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "5012:2:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5012:30:56"
                  },
                  "nodeType": "YulIf",
                  "src": "5009:50:56"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5068:32:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5082:9:56"
                      },
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "5093:6:56"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5078:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5078:22:56"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "5072:2:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5148:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5157:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5160:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5150:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5150:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5150:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "5127:2:56"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5131:4:56",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "5123:3:56"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "5123:13:56"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "5138:7:56"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "5119:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5119:27:56"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "5112:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5112:35:56"
                  },
                  "nodeType": "YulIf",
                  "src": "5109:55:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5173:83:56",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "5221:2:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5225:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5217:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5217:11:56"
                      },
                      {
                        "arguments": [
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "5243:2:56"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "5230:12:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5230:16:56"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "5248:7:56"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_available_length_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "5183:33:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5183:73:56"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "5173:6:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_uint256t_string_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4734:9:56",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "4745:7:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4757:6:56",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "4765:6:56",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "4773:6:56",
                "type": ""
              }
            ],
            "src": "4670:592:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5354:173:56",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5400:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5409:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5412:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5402:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5402:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5402:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "5375:7:56"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5384:9:56"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "5371:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5371:23:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5396:2:56",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "5367:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5367:32:56"
                  },
                  "nodeType": "YulIf",
                  "src": "5364:52:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5425:39:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5454:9:56"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "5435:18:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5435:29:56"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "5425:6:56"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5473:48:56",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5506:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5517:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5502:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5502:18:56"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "5483:18:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5483:38:56"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "5473:6:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5312:9:56",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "5323:7:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5335:6:56",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "5343:6:56",
                "type": ""
              }
            ],
            "src": "5267:260:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5587:325:56",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "5597:22:56",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5611:1:56",
                        "type": "",
                        "value": "1"
                      },
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "5614:4:56"
                      }
                    ],
                    "functionName": {
                      "name": "shr",
                      "nodeType": "YulIdentifier",
                      "src": "5607:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5607:12:56"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "5597:6:56"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5628:38:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "5658:4:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5664:1:56",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "5654:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5654:12:56"
                  },
                  "variables": [
                    {
                      "name": "outOfPlaceEncoding",
                      "nodeType": "YulTypedName",
                      "src": "5632:18:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5705:31:56",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "5707:27:56",
                        "value": {
                          "arguments": [
                            {
                              "name": "length",
                              "nodeType": "YulIdentifier",
                              "src": "5721:6:56"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5729:4:56",
                              "type": "",
                              "value": "0x7f"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nodeType": "YulIdentifier",
                            "src": "5717:3:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5717:17:56"
                        },
                        "variableNames": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "5707:6:56"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "5685:18:56"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "5678:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5678:26:56"
                  },
                  "nodeType": "YulIf",
                  "src": "5675:61:56"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5795:111:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5816:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "5823:3:56",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "5828:10:56",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "5819:3:56"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "5819:20:56"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "5809:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5809:31:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5809:31:56"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5860:1:56",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5863:4:56",
                              "type": "",
                              "value": "0x22"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "5853:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5853:15:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5853:15:56"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5888:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5891:4:56",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5881:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5881:15:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5881:15:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "5751:18:56"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "5774:6:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5782:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "5771:2:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5771:14:56"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "5748:2:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5748:38:56"
                  },
                  "nodeType": "YulIf",
                  "src": "5745:161:56"
                }
              ]
            },
            "name": "extract_byte_array_length",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "5567:4:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "5576:6:56",
                "type": ""
              }
            ],
            "src": "5532:380:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6091:234:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6108:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6119:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6101:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6101:21:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6101:21:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6142:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6153:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6138:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6138:18:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6158:2:56",
                        "type": "",
                        "value": "44"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6131:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6131:30:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6131:30:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6181:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6192:2:56",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6177:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6177:18:56"
                      },
                      {
                        "hexValue": "4552433732313a20617070726f76656420717565727920666f72206e6f6e6578",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "6197:34:56",
                        "type": "",
                        "value": "ERC721: approved query for nonex"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6170:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6170:62:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6170:62:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6252:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6263:2:56",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6248:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6248:18:56"
                      },
                      {
                        "hexValue": "697374656e7420746f6b656e",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "6268:14:56",
                        "type": "",
                        "value": "istent token"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6241:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6241:42:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6241:42:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6292:27:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6304:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6315:3:56",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6300:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6300:19:56"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "6292:4:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6068:9:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "6082:4:56",
                "type": ""
              }
            ],
            "src": "5917:408:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6504:223:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6521:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6532:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6514:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6514:21:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6514:21:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6555:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6566:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6551:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6551:18:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6571:2:56",
                        "type": "",
                        "value": "33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6544:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6544:30:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6544:30:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6594:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6605:2:56",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6590:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6590:18:56"
                      },
                      {
                        "hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e65",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "6610:34:56",
                        "type": "",
                        "value": "ERC721: approval to current owne"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6583:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6583:62:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6583:62:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6665:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6676:2:56",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6661:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6661:18:56"
                      },
                      {
                        "hexValue": "72",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "6681:3:56",
                        "type": "",
                        "value": "r"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6654:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6654:31:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6654:31:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6694:27:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6706:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6717:3:56",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6702:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6702:19:56"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "6694:4:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6481:9:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "6495:4:56",
                "type": ""
              }
            ],
            "src": "6330:397:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6906:246:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6923:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6934:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6916:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6916:21:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6916:21:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6957:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6968:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6953:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6953:18:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6973:2:56",
                        "type": "",
                        "value": "56"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6946:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6946:30:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6946:30:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6996:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7007:2:56",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6992:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6992:18:56"
                      },
                      {
                        "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f74206f77",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "7012:34:56",
                        "type": "",
                        "value": "ERC721: approve caller is not ow"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6985:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6985:62:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6985:62:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7067:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7078:2:56",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7063:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7063:18:56"
                      },
                      {
                        "hexValue": "6e6572206e6f7220617070726f76656420666f7220616c6c",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "7083:26:56",
                        "type": "",
                        "value": "ner nor approved for all"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7056:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7056:54:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7056:54:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7119:27:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7131:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7142:3:56",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7127:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7127:19:56"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "7119:4:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6883:9:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "6897:4:56",
                "type": ""
              }
            ],
            "src": "6732:420:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7331:239:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7348:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7359:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7341:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7341:21:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7341:21:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7382:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7393:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7378:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7378:18:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7398:2:56",
                        "type": "",
                        "value": "49"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7371:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7371:30:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7371:30:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7421:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7432:2:56",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7417:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7417:18:56"
                      },
                      {
                        "hexValue": "4552433732313a207472616e736665722063616c6c6572206973206e6f74206f",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "7437:34:56",
                        "type": "",
                        "value": "ERC721: transfer caller is not o"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7410:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7410:62:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7410:62:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7492:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7503:2:56",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7488:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7488:18:56"
                      },
                      {
                        "hexValue": "776e6572206e6f7220617070726f766564",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "7508:19:56",
                        "type": "",
                        "value": "wner nor approved"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7481:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7481:47:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7481:47:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7537:27:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7549:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7560:3:56",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7545:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7545:19:56"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "7537:4:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7308:9:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "7322:4:56",
                "type": ""
              }
            ],
            "src": "7157:413:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7749:238:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7766:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7777:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7759:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7759:21:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7759:21:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7800:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7811:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7796:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7796:18:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7816:2:56",
                        "type": "",
                        "value": "48"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7789:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7789:30:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7789:30:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7839:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7850:2:56",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7835:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7835:18:56"
                      },
                      {
                        "hexValue": "4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f77",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "7855:34:56",
                        "type": "",
                        "value": "ERC721Burnable: caller is not ow"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7828:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7828:62:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7828:62:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7910:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7921:2:56",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7906:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7906:18:56"
                      },
                      {
                        "hexValue": "6e6572206e6f7220617070726f766564",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "7926:18:56",
                        "type": "",
                        "value": "ner nor approved"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7899:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7899:46:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7899:46:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7954:27:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7966:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7977:3:56",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7962:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7962:19:56"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "7954:4:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_ee6b7e810d7b317242d4688e6943ff4dd7897bb01d903b1a666812481b12a4f1__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7726:9:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "7740:4:56",
                "type": ""
              }
            ],
            "src": "7575:412:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8166:231:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8183:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8194:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8176:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8176:21:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8176:21:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8217:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8228:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8213:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8213:18:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8233:2:56",
                        "type": "",
                        "value": "41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8206:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8206:30:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8206:30:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8256:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8267:2:56",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8252:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8252:18:56"
                      },
                      {
                        "hexValue": "4552433732313a206f776e657220717565727920666f72206e6f6e6578697374",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "8272:34:56",
                        "type": "",
                        "value": "ERC721: owner query for nonexist"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8245:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8245:62:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8245:62:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8327:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8338:2:56",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8323:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8323:18:56"
                      },
                      {
                        "hexValue": "656e7420746f6b656e",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "8343:11:56",
                        "type": "",
                        "value": "ent token"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8316:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8316:39:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8316:39:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8364:27:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8376:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8387:3:56",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "8372:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8372:19:56"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "8364:4:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8143:9:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "8157:4:56",
                "type": ""
              }
            ],
            "src": "7992:405:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8576:232:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8593:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8604:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8586:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8586:21:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8586:21:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8627:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8638:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8623:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8623:18:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8643:2:56",
                        "type": "",
                        "value": "42"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8616:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8616:30:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8616:30:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8666:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8677:2:56",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8662:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8662:18:56"
                      },
                      {
                        "hexValue": "4552433732313a2062616c616e636520717565727920666f7220746865207a65",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "8682:34:56",
                        "type": "",
                        "value": "ERC721: balance query for the ze"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8655:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8655:62:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8655:62:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8737:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8748:2:56",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8733:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8733:18:56"
                      },
                      {
                        "hexValue": "726f2061646472657373",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "8753:12:56",
                        "type": "",
                        "value": "ro address"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8726:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8726:40:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8726:40:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8775:27:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8787:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8798:3:56",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "8783:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8783:19:56"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "8775:4:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8553:9:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "8567:4:56",
                "type": ""
              }
            ],
            "src": "8402:406:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8987:182:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9004:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9015:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8997:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8997:21:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8997:21:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9038:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9049:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9034:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9034:18:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9054:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9027:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9027:30:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9027:30:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9077:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9088:2:56",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9073:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9073:18:56"
                      },
                      {
                        "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "9093:34:56",
                        "type": "",
                        "value": "Ownable: caller is not the owner"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9066:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9066:62:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9066:62:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9137:26:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9149:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9160:2:56",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9145:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9145:18:56"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "9137:4:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8964:9:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "8978:4:56",
                "type": ""
              }
            ],
            "src": "8813:356:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9348:228:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9365:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9376:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9358:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9358:21:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9358:21:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9399:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9410:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9395:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9395:18:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9415:2:56",
                        "type": "",
                        "value": "38"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9388:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9388:30:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9388:30:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9438:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9449:2:56",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9434:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9434:18:56"
                      },
                      {
                        "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "9454:34:56",
                        "type": "",
                        "value": "Ownable: new owner is the zero a"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9427:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9427:62:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9427:62:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9509:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9520:2:56",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9505:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9505:18:56"
                      },
                      {
                        "hexValue": "646472657373",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "9525:8:56",
                        "type": "",
                        "value": "ddress"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9498:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9498:36:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9498:36:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9543:27:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9555:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9566:3:56",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9551:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9551:19:56"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "9543:4:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "9325:9:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "9339:4:56",
                "type": ""
              }
            ],
            "src": "9174:402:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9755:234:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9772:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9783:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9765:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9765:21:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9765:21:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9806:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9817:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9802:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9802:18:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9822:2:56",
                        "type": "",
                        "value": "44"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9795:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9795:30:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9795:30:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9845:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9856:2:56",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9841:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9841:18:56"
                      },
                      {
                        "hexValue": "4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "9861:34:56",
                        "type": "",
                        "value": "ERC721: operator query for nonex"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9834:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9834:62:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9834:62:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9916:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9927:2:56",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9912:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9912:18:56"
                      },
                      {
                        "hexValue": "697374656e7420746f6b656e",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "9932:14:56",
                        "type": "",
                        "value": "istent token"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9905:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9905:42:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9905:42:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9956:27:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9968:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9979:3:56",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9964:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9964:19:56"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "9956:4:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "9732:9:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "9746:4:56",
                "type": ""
              }
            ],
            "src": "9581:408:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10168:227:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10185:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10196:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10178:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10178:21:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10178:21:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10219:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10230:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10215:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10215:18:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10235:2:56",
                        "type": "",
                        "value": "37"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10208:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10208:30:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10208:30:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10258:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10269:2:56",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10254:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10254:18:56"
                      },
                      {
                        "hexValue": "4552433732313a207472616e736665722066726f6d20696e636f727265637420",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "10274:34:56",
                        "type": "",
                        "value": "ERC721: transfer from incorrect "
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10247:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10247:62:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10247:62:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10329:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10340:2:56",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10325:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10325:18:56"
                      },
                      {
                        "hexValue": "6f776e6572",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "10345:7:56",
                        "type": "",
                        "value": "owner"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10318:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10318:35:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10318:35:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10362:27:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10374:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10385:3:56",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "10370:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10370:19:56"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "10362:4:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "10145:9:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "10159:4:56",
                "type": ""
              }
            ],
            "src": "9994:401:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10574:226:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10591:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10602:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10584:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10584:21:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10584:21:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10625:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10636:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10621:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10621:18:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10641:2:56",
                        "type": "",
                        "value": "36"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10614:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10614:30:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10614:30:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10664:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10675:2:56",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10660:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10660:18:56"
                      },
                      {
                        "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f20616464",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "10680:34:56",
                        "type": "",
                        "value": "ERC721: transfer to the zero add"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10653:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10653:62:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10653:62:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10735:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10746:2:56",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10731:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10731:18:56"
                      },
                      {
                        "hexValue": "72657373",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "10751:6:56",
                        "type": "",
                        "value": "ress"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10724:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10724:34:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10724:34:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10767:27:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10779:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10790:3:56",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "10775:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10775:19:56"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "10767:4:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "10551:9:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "10565:4:56",
                "type": ""
              }
            ],
            "src": "10400:400:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10837:95:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10854:1:56",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10861:3:56",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10866:10:56",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "10857:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10857:20:56"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10847:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10847:31:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10847:31:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10894:1:56",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10897:4:56",
                        "type": "",
                        "value": "0x11"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10887:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10887:15:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10887:15:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10918:1:56",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10921:4:56",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "10911:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10911:15:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10911:15:56"
                }
              ]
            },
            "name": "panic_error_0x11",
            "nodeType": "YulFunctionDefinition",
            "src": "10805:127:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10986:76:56",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11008:22:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "11010:16:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11010:18:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11010:18:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "11002:1:56"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "11005:1:56"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "10999:2:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10999:8:56"
                  },
                  "nodeType": "YulIf",
                  "src": "10996:34:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11039:17:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "11051:1:56"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "11054:1:56"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "11047:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11047:9:56"
                  },
                  "variableNames": [
                    {
                      "name": "diff",
                      "nodeType": "YulIdentifier",
                      "src": "11039:4:56"
                    }
                  ]
                }
              ]
            },
            "name": "checked_sub_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "10968:1:56",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "10971:1:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "diff",
                "nodeType": "YulTypedName",
                "src": "10977:4:56",
                "type": ""
              }
            ],
            "src": "10937:125:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11115:80:56",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11142:22:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "11144:16:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11144:18:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11144:18:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "11131:1:56"
                      },
                      {
                        "arguments": [
                          {
                            "name": "y",
                            "nodeType": "YulIdentifier",
                            "src": "11138:1:56"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nodeType": "YulIdentifier",
                          "src": "11134:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11134:6:56"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "11128:2:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11128:13:56"
                  },
                  "nodeType": "YulIf",
                  "src": "11125:39:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11173:16:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "11184:1:56"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "11187:1:56"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "11180:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11180:9:56"
                  },
                  "variableNames": [
                    {
                      "name": "sum",
                      "nodeType": "YulIdentifier",
                      "src": "11173:3:56"
                    }
                  ]
                }
              ]
            },
            "name": "checked_add_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "11098:1:56",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "11101:1:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "sum",
                "nodeType": "YulTypedName",
                "src": "11107:3:56",
                "type": ""
              }
            ],
            "src": "11067:128:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11374:175:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11391:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11402:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11384:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11384:21:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11384:21:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11425:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11436:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11421:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11421:18:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11441:2:56",
                        "type": "",
                        "value": "25"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11414:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11414:30:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11414:30:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11464:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11475:2:56",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11460:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11460:18:56"
                      },
                      {
                        "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "11480:27:56",
                        "type": "",
                        "value": "ERC721: approve to caller"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11453:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11453:55:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11453:55:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11517:26:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11529:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11540:2:56",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "11525:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11525:18:56"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "11517:4:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "11351:9:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "11365:4:56",
                "type": ""
              }
            ],
            "src": "11200:349:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11728:240:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11745:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11756:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11738:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11738:21:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11738:21:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11779:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11790:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11775:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11775:18:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11795:2:56",
                        "type": "",
                        "value": "50"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11768:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11768:30:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11768:30:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11818:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11829:2:56",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11814:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11814:18:56"
                      },
                      {
                        "hexValue": "4552433732313a207472616e7366657220746f206e6f6e204552433732315265",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "11834:34:56",
                        "type": "",
                        "value": "ERC721: transfer to non ERC721Re"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11807:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11807:62:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11807:62:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11889:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11900:2:56",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11885:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11885:18:56"
                      },
                      {
                        "hexValue": "63656976657220696d706c656d656e746572",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "11905:20:56",
                        "type": "",
                        "value": "ceiver implementer"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11878:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11878:48:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11878:48:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11935:27:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11947:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11958:3:56",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "11943:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11943:19:56"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "11935:4:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "11705:9:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "11719:4:56",
                "type": ""
              }
            ],
            "src": "11554:414:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12147:239:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "12164:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12175:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12157:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12157:21:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12157:21:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12198:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12209:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12194:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12194:18:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12214:2:56",
                        "type": "",
                        "value": "49"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12187:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12187:30:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12187:30:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12237:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12248:2:56",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12233:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12233:18:56"
                      },
                      {
                        "hexValue": "45524337323155524953746f726167653a2055524920717565727920666f7220",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "12253:34:56",
                        "type": "",
                        "value": "ERC721URIStorage: URI query for "
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12226:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12226:62:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12226:62:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12308:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12319:2:56",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12304:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12304:18:56"
                      },
                      {
                        "hexValue": "6e6f6e6578697374656e7420746f6b656e",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "12324:19:56",
                        "type": "",
                        "value": "nonexistent token"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12297:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12297:47:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12297:47:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12353:27:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "12365:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12376:3:56",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "12361:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12361:19:56"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "12353:4:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_8e9ed1638ba7e2d59e03d0957c9339381732ac84d73f65c86c45db1467eafa2a__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "12124:9:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "12138:4:56",
                "type": ""
              }
            ],
            "src": "11973:413:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12578:283:56",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12588:27:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "12608:6:56"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "12602:5:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12602:13:56"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "12592:6:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "12650:6:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12658:4:56",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12646:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12646:17:56"
                      },
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "12665:3:56"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "12670:6:56"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory",
                      "nodeType": "YulIdentifier",
                      "src": "12624:21:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12624:53:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12624:53:56"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12686:29:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "12703:3:56"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "12708:6:56"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "12699:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12699:16:56"
                  },
                  "variables": [
                    {
                      "name": "end_1",
                      "nodeType": "YulTypedName",
                      "src": "12690:5:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12724:29:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "12746:6:56"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "12740:5:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12740:13:56"
                  },
                  "variables": [
                    {
                      "name": "length_1",
                      "nodeType": "YulTypedName",
                      "src": "12728:8:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "12788:6:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12796:4:56",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12784:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12784:17:56"
                      },
                      {
                        "name": "end_1",
                        "nodeType": "YulIdentifier",
                        "src": "12803:5:56"
                      },
                      {
                        "name": "length_1",
                        "nodeType": "YulIdentifier",
                        "src": "12810:8:56"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory",
                      "nodeType": "YulIdentifier",
                      "src": "12762:21:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12762:57:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12762:57:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12828:27:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "end_1",
                        "nodeType": "YulIdentifier",
                        "src": "12839:5:56"
                      },
                      {
                        "name": "length_1",
                        "nodeType": "YulIdentifier",
                        "src": "12846:8:56"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "12835:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12835:20:56"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "12828:3:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "12546:3:56",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "12551:6:56",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "12559:6:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "12570:3:56",
                "type": ""
              }
            ],
            "src": "12391:470:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13040:236:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13057:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13068:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13050:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13050:21:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13050:21:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13091:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13102:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13087:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13087:18:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13107:2:56",
                        "type": "",
                        "value": "46"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13080:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13080:30:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13080:30:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13130:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13141:2:56",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13126:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13126:18:56"
                      },
                      {
                        "hexValue": "45524337323155524953746f726167653a2055524920736574206f66206e6f6e",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "13146:34:56",
                        "type": "",
                        "value": "ERC721URIStorage: URI set of non"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13119:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13119:62:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13119:62:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13201:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13212:2:56",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13197:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13197:18:56"
                      },
                      {
                        "hexValue": "6578697374656e7420746f6b656e",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "13217:16:56",
                        "type": "",
                        "value": "existent token"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13190:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13190:44:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13190:44:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13243:27:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13255:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13266:3:56",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "13251:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13251:19:56"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "13243:4:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_7521de1f20ce4d7bb86b61090bad73a87315a1f4baff36cc352901c7777280c4__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "13017:9:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "13031:4:56",
                "type": ""
              }
            ],
            "src": "12866:410:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13484:286:56",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "13494:29:56",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13512:3:56",
                            "type": "",
                            "value": "160"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13517:1:56",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "13508:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13508:11:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13521:1:56",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "13504:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13504:19:56"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "13498:2:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13539:9:56"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "13554:6:56"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "13562:2:56"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "13550:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13550:15:56"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13532:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13532:34:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13532:34:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13586:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13597:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13582:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13582:18:56"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "13606:6:56"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "13614:2:56"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "13602:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13602:15:56"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13575:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13575:43:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13575:43:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13638:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13649:2:56",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13634:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13634:18:56"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "13654:6:56"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13627:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13627:34:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13627:34:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13681:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13692:2:56",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13677:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13677:18:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13697:3:56",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13670:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13670:31:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13670:31:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13710:54:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "13736:6:56"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13748:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13759:3:56",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13744:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13744:19:56"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nodeType": "YulIdentifier",
                      "src": "13718:17:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13718:46:56"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "13710:4:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "13429:9:56",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "13440:6:56",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "13448:6:56",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "13456:6:56",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "13464:6:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "13475:4:56",
                "type": ""
              }
            ],
            "src": "13281:489:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13855:169:56",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "13901:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "13910:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "13913:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "13903:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "13903:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "13903:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "13876:7:56"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13885:9:56"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "13872:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13872:23:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13897:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "13868:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13868:32:56"
                  },
                  "nodeType": "YulIf",
                  "src": "13865:52:56"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "13926:29:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13945:9:56"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "13939:5:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13939:16:56"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "13930:5:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "13988:5:56"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_bytes4",
                      "nodeType": "YulIdentifier",
                      "src": "13964:23:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13964:30:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13964:30:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14003:15:56",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "14013:5:56"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "14003:6:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes4_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "13821:9:56",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "13832:7:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "13844:6:56",
                "type": ""
              }
            ],
            "src": "13775:249:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14203:237:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "14220:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14231:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14213:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14213:21:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14213:21:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14254:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14265:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14250:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14250:18:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14270:2:56",
                        "type": "",
                        "value": "47"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14243:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14243:30:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14243:30:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14293:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14304:2:56",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14289:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14289:18:56"
                      },
                      {
                        "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "14309:34:56",
                        "type": "",
                        "value": "ERC721Metadata: URI query for no"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14282:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14282:62:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14282:62:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14364:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14375:2:56",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14360:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14360:18:56"
                      },
                      {
                        "hexValue": "6e6578697374656e7420746f6b656e",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "14380:17:56",
                        "type": "",
                        "value": "nexistent token"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14353:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14353:45:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14353:45:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14407:27:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "14419:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14430:3:56",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "14415:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14415:19:56"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "14407:4:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "14180:9:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "14194:4:56",
                "type": ""
              }
            ],
            "src": "14029:411:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14492:88:56",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "14523:22:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "14525:16:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "14525:18:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "14525:18:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "14508:5:56"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14519:1:56",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nodeType": "YulIdentifier",
                          "src": "14515:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14515:6:56"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "14505:2:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14505:17:56"
                  },
                  "nodeType": "YulIf",
                  "src": "14502:43:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14554:20:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "14565:5:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14572:1:56",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "14561:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14561:13:56"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nodeType": "YulIdentifier",
                      "src": "14554:3:56"
                    }
                  ]
                }
              ]
            },
            "name": "increment_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "14474:5:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "14484:3:56",
                "type": ""
              }
            ],
            "src": "14445:135:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14617:95:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14634:1:56",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14641:3:56",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14646:10:56",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "14637:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14637:20:56"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14627:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14627:31:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14627:31:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14674:1:56",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14677:4:56",
                        "type": "",
                        "value": "0x12"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14667:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14667:15:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14667:15:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14698:1:56",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14701:4:56",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "14691:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14691:15:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14691:15:56"
                }
              ]
            },
            "name": "panic_error_0x12",
            "nodeType": "YulFunctionDefinition",
            "src": "14585:127:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14763:74:56",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "14786:22:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x12",
                            "nodeType": "YulIdentifier",
                            "src": "14788:16:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "14788:18:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "14788:18:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "14783:1:56"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "14776:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14776:9:56"
                  },
                  "nodeType": "YulIf",
                  "src": "14773:35:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14817:14:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "14826:1:56"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "14829:1:56"
                      }
                    ],
                    "functionName": {
                      "name": "div",
                      "nodeType": "YulIdentifier",
                      "src": "14822:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14822:9:56"
                  },
                  "variableNames": [
                    {
                      "name": "r",
                      "nodeType": "YulIdentifier",
                      "src": "14817:1:56"
                    }
                  ]
                }
              ]
            },
            "name": "checked_div_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "14748:1:56",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "14751:1:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "r",
                "nodeType": "YulTypedName",
                "src": "14757:1:56",
                "type": ""
              }
            ],
            "src": "14717:120:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14880:74:56",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "14903:22:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x12",
                            "nodeType": "YulIdentifier",
                            "src": "14905:16:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "14905:18:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "14905:18:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "14900:1:56"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "14893:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14893:9:56"
                  },
                  "nodeType": "YulIf",
                  "src": "14890:35:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14934:14:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "14943:1:56"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "14946:1:56"
                      }
                    ],
                    "functionName": {
                      "name": "mod",
                      "nodeType": "YulIdentifier",
                      "src": "14939:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14939:9:56"
                  },
                  "variableNames": [
                    {
                      "name": "r",
                      "nodeType": "YulIdentifier",
                      "src": "14934:1:56"
                    }
                  ]
                }
              ]
            },
            "name": "mod_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "14865:1:56",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "14868:1:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "r",
                "nodeType": "YulTypedName",
                "src": "14874:1:56",
                "type": ""
              }
            ],
            "src": "14842:112:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14991:95:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15008:1:56",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15015:3:56",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15020:10:56",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "15011:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15011:20:56"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15001:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15001:31:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15001:31:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15048:1:56",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15051:4:56",
                        "type": "",
                        "value": "0x32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15041:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15041:15:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15041:15:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15072:1:56",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15075:4:56",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "15065:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15065:15:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15065:15:56"
                }
              ]
            },
            "name": "panic_error_0x32",
            "nodeType": "YulFunctionDefinition",
            "src": "14959:127:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "15265:182:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15282:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15293:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15275:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15275:21:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15275:21:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15316:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15327:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15312:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15312:18:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15332:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15305:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15305:30:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15305:30:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15355:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15366:2:56",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15351:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15351:18:56"
                      },
                      {
                        "hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "15371:34:56",
                        "type": "",
                        "value": "ERC721: mint to the zero address"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15344:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15344:62:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15344:62:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15415:26:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15427:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15438:2:56",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "15423:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15423:18:56"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "15415:4:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "15242:9:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "15256:4:56",
                "type": ""
              }
            ],
            "src": "15091:356:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "15626:178:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15643:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15654:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15636:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15636:21:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15636:21:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15677:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15688:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15673:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15673:18:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15693:2:56",
                        "type": "",
                        "value": "28"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15666:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15666:30:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15666:30:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15716:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15727:2:56",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15712:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15712:18:56"
                      },
                      {
                        "hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "15732:30:56",
                        "type": "",
                        "value": "ERC721: token already minted"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15705:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15705:58:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15705:58:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15772:26:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15784:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15795:2:56",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "15780:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15780:18:56"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "15772:4:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "15603:9:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "15617:4:56",
                "type": ""
              }
            ],
            "src": "15452:352:56"
          }
        ]
      },
      "contents": "{\n    { }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value1 := value\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_available_length_bytes(src, length, end) -> array\n    {\n        let _1 := 0xffffffffffffffff\n        if gt(length, _1) { panic_error_0x41() }\n        let _2 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 31), _2), 63), _2))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        array := memPtr\n        mstore(memPtr, length)\n        if gt(add(src, length), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), src, length)\n        mstore(add(add(memPtr, length), 0x20), 0)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        value3 := abi_decode_available_length_bytes(add(_1, 32), calldataload(_1), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_uint256t_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        value2 := abi_decode_available_length_bytes(add(_1, 32), calldataload(_1), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"ERC721: approved query for nonex\")\n        mstore(add(headStart, 96), \"istent token\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"ERC721: approval to current owne\")\n        mstore(add(headStart, 96), \"r\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 56)\n        mstore(add(headStart, 64), \"ERC721: approve caller is not ow\")\n        mstore(add(headStart, 96), \"ner nor approved for all\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 49)\n        mstore(add(headStart, 64), \"ERC721: transfer caller is not o\")\n        mstore(add(headStart, 96), \"wner nor approved\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_ee6b7e810d7b317242d4688e6943ff4dd7897bb01d903b1a666812481b12a4f1__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 48)\n        mstore(add(headStart, 64), \"ERC721Burnable: caller is not ow\")\n        mstore(add(headStart, 96), \"ner nor approved\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC721: owner query for nonexist\")\n        mstore(add(headStart, 96), \"ent token\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"ERC721: balance query for the ze\")\n        mstore(add(headStart, 96), \"ro address\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"ERC721: operator query for nonex\")\n        mstore(add(headStart, 96), \"istent token\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC721: transfer from incorrect \")\n        mstore(add(headStart, 96), \"owner\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC721: transfer to the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"ERC721: approve to caller\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 50)\n        mstore(add(headStart, 64), \"ERC721: transfer to non ERC721Re\")\n        mstore(add(headStart, 96), \"ceiver implementer\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8e9ed1638ba7e2d59e03d0957c9339381732ac84d73f65c86c45db1467eafa2a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 49)\n        mstore(add(headStart, 64), \"ERC721URIStorage: URI query for \")\n        mstore(add(headStart, 96), \"nonexistent token\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), end_1, length_1)\n        end := add(end_1, length_1)\n    }\n    function abi_encode_tuple_t_stringliteral_7521de1f20ce4d7bb86b61090bad73a87315a1f4baff36cc352901c7777280c4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"ERC721URIStorage: URI set of non\")\n        mstore(add(headStart, 96), \"existent token\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), 128)\n        tail := abi_encode_string(value3, add(headStart, 128))\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 47)\n        mstore(add(headStart, 64), \"ERC721Metadata: URI query for no\")\n        mstore(add(headStart, 96), \"nexistent token\")\n        tail := add(headStart, 128)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := div(x, y)\n    }\n    function mod_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := mod(x, y)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"ERC721: mint to the zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 28)\n        mstore(add(headStart, 64), \"ERC721: token already minted\")\n        tail := add(headStart, 96)\n    }\n}",
      "id": 56,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "373:807:51:-:0;;;489:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1456:13:20;;560:5:51;;567:7;;1456:13:20;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;1479:17:20;;;;:7;;:17;;;;;:::i;:::-;;1390:113;;921:32:3;940:12;:10;;;:12;;:::i;:::-;921:18;:32::i;:::-;489:93:51;;373:807;;640:96:27;719:10;;640:96::o;2270:187:3:-;2362:6;;;-1:-1:-1;;;;;2378:17:3;;;-1:-1:-1;;;;;;2378:17:3;;;;;;;2410:40;;2362:6;;;2378:17;2362:6;;2410:40;;2343:16;;2410:40;2333:124;2270:187;:::o;373:807:51:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;373:807:51;;;-1:-1:-1;373:807:51;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:56;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:885;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:56;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:56;;;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;;;930:2;927:1;924:9;921:80;;;989:1;984:2;979;971:6;967:15;963:24;956:35;921:80;1019:6;146:885;-1:-1:-1;;;;;;146:885:56:o;1036:562::-;1135:6;1143;1196:2;1184:9;1175:7;1171:23;1167:32;1164:52;;;1212:1;1209;1202:12;1164:52;1239:16;;-1:-1:-1;;;;;1304:14:56;;;1301:34;;;1331:1;1328;1321:12;1301:34;1354:61;1407:7;1398:6;1387:9;1383:22;1354:61;:::i;:::-;1344:71;;1461:2;1450:9;1446:18;1440:25;1424:41;;1490:2;1480:8;1477:16;1474:36;;;1506:1;1503;1496:12;1474:36;;1529:63;1584:7;1573:8;1562:9;1558:24;1529:63;:::i;:::-;1519:73;;;1036:562;;;;;:::o;1603:380::-;1682:1;1678:12;;;;1725;;;1746:61;;1800:4;1792:6;1788:17;1778:27;;1746:61;1853:2;1845:6;1842:14;1822:18;1819:38;1816:161;;;1899:10;1894:3;1890:20;1887:1;1880:31;1934:4;1931:1;1924:15;1962:4;1959:1;1952:15;1816:161;;1603:380;;;:::o;:::-;373:807:51;;;;;;",
  "deployedSourceMap": "373:807:51:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:300:20;;;;;;:::i;:::-;;:::i;:::-;;;565:14:56;;558:22;540:41;;528:2;513:18;1570:300:20;;;;;;;;2488:98;;;:::i;:::-;;;;;;;:::i;3999:217::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1692:32:56;;;1674:51;;1662:2;1647:18;3999:217:20;1528:203:56;3537:401:20;;;;;;:::i;:::-;;:::i;:::-;;4726:330;;;;;;:::i;:::-;;:::i;5122:179::-;;;;;;:::i;:::-;;:::i;529:241:23:-;;;;;;:::i;:::-;;:::i;2191:235:20:-;;;;;;:::i;:::-;;:::i;1929:205::-;;;;;;:::i;:::-;;:::i;:::-;;;2843:25:56;;;2831:2;2816:18;1929:205:20;2697:177:56;1668:101:3;;;:::i;1036:85::-;1108:6;;-1:-1:-1;;;;;1108:6:3;1036:85;;2650:102:20;;;:::i;4283:153::-;;;;;;:::i;:::-;;:::i;5367:320::-;;;;;;:::i;:::-;;:::i;989:189:51:-;;;;;;:::i;:::-;;:::i;588:188::-;;;;;;:::i;:::-;;:::i;4502:162:20:-;;;;;;:::i;:::-;-1:-1:-1;;;;;4622:25:20;;;4599:4;4622:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4502:162;1918:198:3;;;;;;:::i;:::-;;:::i;1570:300:20:-;1672:4;-1:-1:-1;;;;;;1707:40:20;;-1:-1:-1;;;1707:40:20;;:104;;-1:-1:-1;;;;;;;1763:48:20;;-1:-1:-1;;;1763:48:20;1707:104;:156;;;-1:-1:-1;;;;;;;;;;937:40:33;;;1827:36:20;1688:175;1570:300;-1:-1:-1;;1570:300:20:o;2488:98::-;2542:13;2574:5;2567:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2488:98;:::o;3999:217::-;4075:7;4102:16;4110:7;4102;:16::i;:::-;4094:73;;;;-1:-1:-1;;;4094:73:20;;6119:2:56;4094:73:20;;;6101:21:56;6158:2;6138:18;;;6131:30;6197:34;6177:18;;;6170:62;-1:-1:-1;;;6248:18:56;;;6241:42;6300:19;;4094:73:20;;;;;;;;;-1:-1:-1;4185:24:20;;;;:15;:24;;;;;;-1:-1:-1;;;;;4185:24:20;;3999:217::o;3537:401::-;3617:13;3633:23;3648:7;3633:14;:23::i;:::-;3617:39;;3680:5;-1:-1:-1;;;;;3674:11:20;:2;-1:-1:-1;;;;;3674:11:20;;;3666:57;;;;-1:-1:-1;;;3666:57:20;;6532:2:56;3666:57:20;;;6514:21:56;6571:2;6551:18;;;6544:30;6610:34;6590:18;;;6583:62;-1:-1:-1;;;6661:18:56;;;6654:31;6702:19;;3666:57:20;6330:397:56;3666:57:20;719:10:27;-1:-1:-1;;;;;3755:21:20;;;;:62;;-1:-1:-1;3780:37:20;3797:5;719:10:27;4502:162:20;:::i;3780:37::-;3734:165;;;;-1:-1:-1;;;3734:165:20;;6934:2:56;3734:165:20;;;6916:21:56;6973:2;6953:18;;;6946:30;7012:34;6992:18;;;6985:62;7083:26;7063:18;;;7056:54;7127:19;;3734:165:20;6732:420:56;3734:165:20;3910:21;3919:2;3923:7;3910:8;:21::i;:::-;3607:331;3537:401;;:::o;4726:330::-;4915:41;719:10:27;4934:12:20;4948:7;4915:18;:41::i;:::-;4907:103;;;;-1:-1:-1;;;4907:103:20;;;;;;;:::i;:::-;5021:28;5031:4;5037:2;5041:7;5021:9;:28::i;5122:179::-;5255:39;5272:4;5278:2;5282:7;5255:39;;;;;;;;;;;;:16;:39::i;529:241:23:-;645:41;719:10:27;664:12:23;640:96:27;645:41:23;637:102;;;;-1:-1:-1;;;637:102:23;;7777:2:56;637:102:23;;;7759:21:56;7816:2;7796:18;;;7789:30;7855:34;7835:18;;;7828:62;-1:-1:-1;;;7906:18:56;;;7899:46;7962:19;;637:102:23;7575:412:56;637:102:23;749:14;755:7;749:5;:14::i;:::-;529:241;:::o;2191:235:20:-;2263:7;2298:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2298:16:20;2332:19;2324:73;;;;-1:-1:-1;;;2324:73:20;;8194:2:56;2324:73:20;;;8176:21:56;8233:2;8213:18;;;8206:30;8272:34;8252:18;;;8245:62;-1:-1:-1;;;8323:18:56;;;8316:39;8372:19;;2324:73:20;7992:405:56;1929:205:20;2001:7;-1:-1:-1;;;;;2028:19:20;;2020:74;;;;-1:-1:-1;;;2020:74:20;;8604:2:56;2020:74:20;;;8586:21:56;8643:2;8623:18;;;8616:30;8682:34;8662:18;;;8655:62;-1:-1:-1;;;8733:18:56;;;8726:40;8783:19;;2020:74:20;8402:406:56;2020:74:20;-1:-1:-1;;;;;;2111:16:20;;;;;:9;:16;;;;;;;1929:205::o;1668:101:3:-;1108:6;;-1:-1:-1;;;;;1108:6:3;719:10:27;1248:23:3;1240:68;;;;-1:-1:-1;;;1240:68:3;;;;;;;:::i;:::-;1732:30:::1;1759:1;1732:18;:30::i;:::-;1668:101::o:0;2650:102:20:-;2706:13;2738:7;2731:14;;;;;:::i;4283:153::-;4377:52;719:10:27;4410:8:20;4420;4377:18;:52::i;:::-;4283:153;;:::o;5367:320::-;5536:41;719:10:27;5569:7:20;5536:18;:41::i;:::-;5528:103;;;;-1:-1:-1;;;5528:103:20;;;;;;;:::i;:::-;5641:39;5655:4;5661:2;5665:7;5674:5;5641:13;:39::i;:::-;5367:320;;;;:::o;989:189:51:-;1112:13;1148:23;1163:7;1148:14;:23::i;588:188::-;1108:6:3;;-1:-1:-1;;;;;1108:6:3;719:10:27;1248:23:3;1240:68;;;;-1:-1:-1;;;1240:68:3;;;;;;;:::i;:::-;711:22:51::1;721:2;725:7;711:9;:22::i;:::-;743:26;756:7;765:3;743:12;:26::i;1918:198:3:-:0;1108:6;;-1:-1:-1;;;;;1108:6:3;719:10:27;1248:23:3;1240:68;;;;-1:-1:-1;;;1240:68:3;;;;;;;:::i;:::-;-1:-1:-1;;;;;2006:22:3;::::1;1998:73;;;::::0;-1:-1:-1;;;1998:73:3;;9376:2:56;1998:73:3::1;::::0;::::1;9358:21:56::0;9415:2;9395:18;;;9388:30;9454:34;9434:18;;;9427:62;-1:-1:-1;;;9505:18:56;;;9498:36;9551:19;;1998:73:3::1;9174:402:56::0;1998:73:3::1;2081:28;2100:8;2081:18;:28::i;7159:125:20:-:0;7224:4;7247:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7247:16:20;:30;;;7159:125::o;11168:171::-;11242:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11242:29:20;-1:-1:-1;;;;;11242:29:20;;;;;;;;:24;;11295:23;11242:24;11295:14;:23::i;:::-;-1:-1:-1;;;;;11286:46:20;;;;;;;;;;;11168:171;;:::o;7442:344::-;7535:4;7559:16;7567:7;7559;:16::i;:::-;7551:73;;;;-1:-1:-1;;;7551:73:20;;9783:2:56;7551:73:20;;;9765:21:56;9822:2;9802:18;;;9795:30;9861:34;9841:18;;;9834:62;-1:-1:-1;;;9912:18:56;;;9905:42;9964:19;;7551:73:20;9581:408:56;7551:73:20;7634:13;7650:23;7665:7;7650:14;:23::i;:::-;7634:39;;7702:5;-1:-1:-1;;;;;7691:16:20;:7;-1:-1:-1;;;;;7691:16:20;;:51;;;;7735:7;-1:-1:-1;;;;;7711:31:20;:20;7723:7;7711:11;:20::i;:::-;-1:-1:-1;;;;;7711:31:20;;7691:51;:87;;;-1:-1:-1;;;;;;4622:25:20;;;4599:4;4622:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7746:32;7683:96;7442:344;-1:-1:-1;;;;7442:344:20:o;10452:605::-;10606:4;-1:-1:-1;;;;;10579:31:20;:23;10594:7;10579:14;:23::i;:::-;-1:-1:-1;;;;;10579:31:20;;10571:81;;;;-1:-1:-1;;;10571:81:20;;10196:2:56;10571:81:20;;;10178:21:56;10235:2;10215:18;;;10208:30;10274:34;10254:18;;;10247:62;-1:-1:-1;;;10325:18:56;;;10318:35;10370:19;;10571:81:20;9994:401:56;10571:81:20;-1:-1:-1;;;;;10670:16:20;;10662:65;;;;-1:-1:-1;;;10662:65:20;;10602:2:56;10662:65:20;;;10584:21:56;10641:2;10621:18;;;10614:30;10680:34;10660:18;;;10653:62;-1:-1:-1;;;10731:18:56;;;10724:34;10775:19;;10662:65:20;10400:400:56;10662:65:20;10839:29;10856:1;10860:7;10839:8;:29::i;:::-;-1:-1:-1;;;;;10879:15:20;;;;;;:9;:15;;;;;:20;;10898:1;;10879:15;:20;;10898:1;;10879:20;:::i;:::-;;;;-1:-1:-1;;;;;;;10909:13:20;;;;;;:9;:13;;;;;:18;;10926:1;;10909:13;:18;;10926:1;;10909:18;:::i;:::-;;;;-1:-1:-1;;10937:16:20;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;10937:21:20;-1:-1:-1;;;;;10937:21:20;;;;;;;;;10974:27;;10937:16;;10974:27;;;;;;;3607:331;3537:401;;:::o;850:133:51:-;956:20;968:7;956:11;:20::i;2270:187:3:-;2362:6;;;-1:-1:-1;;;;;2378:17:3;;;-1:-1:-1;;;;;;2378:17:3;;;;;;;2410:40;;2362:6;;;2378:17;2362:6;;2410:40;;2343:16;;2410:40;2333:124;2270:187;:::o;11474:307:20:-;11624:8;-1:-1:-1;;;;;11615:17:20;:5;-1:-1:-1;;;;;11615:17:20;;;11607:55;;;;-1:-1:-1;;;11607:55:20;;11402:2:56;11607:55:20;;;11384:21:56;11441:2;11421:18;;;11414:30;11480:27;11460:18;;;11453:55;11525:18;;11607:55:20;11200:349:56;11607:55:20;-1:-1:-1;;;;;11672:25:20;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11672:46:20;;;;;;;;;;11733:41;;540::56;;;11733::20;;513:18:56;11733:41:20;;;;;;;11474:307;;;:::o;6549:::-;6700:28;6710:4;6716:2;6720:7;6700:9;:28::i;:::-;6746:48;6769:4;6775:2;6779:7;6788:5;6746:22;:48::i;:::-;6738:111;;;;-1:-1:-1;;;6738:111:20;;;;;;;:::i;467:663:24:-;540:13;573:16;581:7;573;:16::i;:::-;565:78;;;;-1:-1:-1;;;565:78:24;;12175:2:56;565:78:24;;;12157:21:56;12214:2;12194:18;;;12187:30;12253:34;12233:18;;;12226:62;-1:-1:-1;;;12304:18:56;;;12297:47;12361:19;;565:78:24;11973:413:56;565:78:24;654:23;680:19;;;:10;:19;;;;;654:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;709:18;730:10;3464:9:20;;;;;;;;;-1:-1:-1;3464:9:20;;;3388:92;730:10:24;709:31;;819:4;813:18;835:1;813:23;809:70;;;-1:-1:-1;859:9:24;467:663;-1:-1:-1;;467:663:24:o;809:70::-;981:23;;:27;977:106;;1055:4;1061:9;1038:33;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1024:48;;;;467:663;;;:::o;977:106::-;1100:23;1115:7;1100:14;:23::i;8116:108:20:-;8191:26;8201:2;8205:7;8191:26;;;;;;;;;;;;:9;:26::i;1277:214:24:-;1376:16;1384:7;1376;:16::i;:::-;1368:75;;;;-1:-1:-1;;;1368:75:24;;13068:2:56;1368:75:24;;;13050:21:56;13107:2;13087:18;;;13080:30;13146:34;13126:18;;;13119:62;-1:-1:-1;;;13197:18:56;;;13190:44;13251:19;;1368:75:24;12866:410:56;1368:75:24;1453:19;;;;:10;:19;;;;;;;;:31;;;;;;;;:::i;1708:200::-;1776:20;1788:7;1776:11;:20::i;:::-;1817:19;;;;:10;:19;;;;;1811:33;;;;;:::i;:::-;:38;;-1:-1:-1;1807:95:24;;1872:19;;;;:10;:19;;;;;1865:26;;;:::i;12334:778:20:-;12484:4;-1:-1:-1;;;;;12504:13:20;;1465:19:26;:23;12500:606:20;;12539:72;;-1:-1:-1;;;12539:72:20;;-1:-1:-1;;;;;12539:36:20;;;;;:72;;719:10:27;;12590:4:20;;12596:7;;12605:5;;12539:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12539:72:20;;;;;;;;-1:-1:-1;;12539:72:20;;;;;;;;;;;;:::i;:::-;;;12535:519;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12778:13:20;;12774:266;;12820:60;;-1:-1:-1;;;12820:60:20;;;;;;;:::i;12774:266::-;12992:6;12986:13;12977:6;12973:2;12969:15;12962:38;12535:519;-1:-1:-1;;;;;;12661:51:20;-1:-1:-1;;;12661:51:20;;-1:-1:-1;12654:58:20;;12500:606;-1:-1:-1;13091:4:20;12334:778;;;;;;:::o;2818:329::-;2891:13;2924:16;2932:7;2924;:16::i;:::-;2916:76;;;;-1:-1:-1;;;2916:76:20;;14231:2:56;2916:76:20;;;14213:21:56;14270:2;14250:18;;;14243:30;14309:34;14289:18;;;14282:62;-1:-1:-1;;;14360:18:56;;;14353:45;14415:19;;2916:76:20;14029:411:56;2916:76:20;3003:21;3027:10;3464:9;;;;;;;;;-1:-1:-1;3464:9:20;;;3388:92;3027:10;3003:34;;3078:1;3060:7;3054:21;:25;:86;;;;;;;;;;;;;;;;;3106:7;3115:18;:7;:16;:18::i;:::-;3089:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3054:86;3047:93;2818:329;-1:-1:-1;;;2818:329:20:o;8445:311::-;8570:18;8576:2;8580:7;8570:5;:18::i;:::-;8619:54;8650:1;8654:2;8658:7;8667:5;8619:22;:54::i;:::-;8598:151;;;;-1:-1:-1;;;8598:151:20;;;;;;;:::i;9722:406::-;9781:13;9797:23;9812:7;9797:14;:23::i;:::-;9781:39;;9917:29;9934:1;9938:7;9917:8;:29::i;:::-;-1:-1:-1;;;;;9957:16:20;;;;;;:9;:16;;;;;:21;;9977:1;;9957:16;:21;;9977:1;;9957:21;:::i;:::-;;;;-1:-1:-1;;9995:16:20;;;;:7;:16;;;;;;9988:23;;-1:-1:-1;;;;;;9988:23:20;;;10027:36;10003:7;;9995:16;-1:-1:-1;;;;;10027:36:20;;;;;9995:16;;10027:36;4283:153;;:::o;328:703:29:-;384:13;601:10;597:51;;-1:-1:-1;;627:10:29;;;;;;;;;;;;-1:-1:-1;;;627:10:29;;;;;328:703::o;597:51::-;672:5;657:12;711:75;718:9;;711:75;;743:8;;;;:::i;:::-;;-1:-1:-1;765:10:29;;-1:-1:-1;773:2:29;765:10;;:::i;:::-;;;711:75;;;795:19;827:6;817:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;817:17:29;;795:39;;844:150;851:10;;844:150;;877:11;887:1;877:11;;:::i;:::-;;-1:-1:-1;945:10:29;953:2;945:5;:10;:::i;:::-;932:24;;:2;:24;:::i;:::-;919:39;;902:6;909;902:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;902:56:29;;;;;;;;-1:-1:-1;972:11:29;981:2;972:11;;:::i;:::-;;;844:150;;9078:427:20;-1:-1:-1;;;;;9157:16:20;;9149:61;;;;-1:-1:-1;;;9149:61:20;;15293:2:56;9149:61:20;;;15275:21:56;;;15312:18;;;15305:30;15371:34;15351:18;;;15344:62;15423:18;;9149:61:20;15091:356:56;9149:61:20;9229:16;9237:7;9229;:16::i;:::-;9228:17;9220:58;;;;-1:-1:-1;;;9220:58:20;;15654:2:56;9220:58:20;;;15636:21:56;15693:2;15673:18;;;15666:30;15732;15712:18;;;15705:58;15780:18;;9220:58:20;15452:352:56;9220:58:20;-1:-1:-1;;;;;9345:13:20;;;;;;:9;:13;;;;;:18;;9362:1;;9345:13;:18;;9362:1;;9345:18;:::i;:::-;;;;-1:-1:-1;;9373:16:20;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9373:21:20;-1:-1:-1;;;;;9373:21:20;;;;;;;;9410:33;;9373:16;;;9410:33;;9373:16;;9410:33;4283:153;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:131:56;-1:-1:-1;;;;;;88:32:56;;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:258::-;664:1;674:113;688:6;685:1;682:13;674:113;;;764:11;;;758:18;745:11;;;738:39;710:2;703:10;674:113;;;805:6;802:1;799:13;796:48;;;-1:-1:-1;;840:1:56;822:16;;815:27;592:258::o;855:::-;897:3;935:5;929:12;962:6;957:3;950:19;978:63;1034:6;1027:4;1022:3;1018:14;1011:4;1004:5;1000:16;978:63;:::i;:::-;1095:2;1074:15;-1:-1:-1;;1070:29:56;1061:39;;;;1102:4;1057:50;;855:258;-1:-1:-1;;855:258:56:o;1118:220::-;1267:2;1256:9;1249:21;1230:4;1287:45;1328:2;1317:9;1313:18;1305:6;1287:45;:::i;1343:180::-;1402:6;1455:2;1443:9;1434:7;1430:23;1426:32;1423:52;;;1471:1;1468;1461:12;1423:52;-1:-1:-1;1494:23:56;;1343:180;-1:-1:-1;1343:180:56:o;1736:173::-;1804:20;;-1:-1:-1;;;;;1853:31:56;;1843:42;;1833:70;;1899:1;1896;1889:12;1833:70;1736:173;;;:::o;1914:254::-;1982:6;1990;2043:2;2031:9;2022:7;2018:23;2014:32;2011:52;;;2059:1;2056;2049:12;2011:52;2082:29;2101:9;2082:29;:::i;:::-;2072:39;2158:2;2143:18;;;;2130:32;;-1:-1:-1;;;1914:254:56:o;2173:328::-;2250:6;2258;2266;2319:2;2307:9;2298:7;2294:23;2290:32;2287:52;;;2335:1;2332;2325:12;2287:52;2358:29;2377:9;2358:29;:::i;:::-;2348:39;;2406:38;2440:2;2429:9;2425:18;2406:38;:::i;:::-;2396:48;;2491:2;2480:9;2476:18;2463:32;2453:42;;2173:328;;;;;:::o;2506:186::-;2565:6;2618:2;2606:9;2597:7;2593:23;2589:32;2586:52;;;2634:1;2631;2624:12;2586:52;2657:29;2676:9;2657:29;:::i;2879:347::-;2944:6;2952;3005:2;2993:9;2984:7;2980:23;2976:32;2973:52;;;3021:1;3018;3011:12;2973:52;3044:29;3063:9;3044:29;:::i;:::-;3034:39;;3123:2;3112:9;3108:18;3095:32;3170:5;3163:13;3156:21;3149:5;3146:32;3136:60;;3192:1;3189;3182:12;3136:60;3215:5;3205:15;;;2879:347;;;;;:::o;3231:127::-;3292:10;3287:3;3283:20;3280:1;3273:31;3323:4;3320:1;3313:15;3347:4;3344:1;3337:15;3363:631;3427:5;3457:18;3498:2;3490:6;3487:14;3484:40;;;3504:18;;:::i;:::-;3579:2;3573:9;3547:2;3633:15;;-1:-1:-1;;3629:24:56;;;3655:2;3625:33;3621:42;3609:55;;;3679:18;;;3699:22;;;3676:46;3673:72;;;3725:18;;:::i;:::-;3765:10;3761:2;3754:22;3794:6;3785:15;;3824:6;3816;3809:22;3864:3;3855:6;3850:3;3846:16;3843:25;3840:45;;;3881:1;3878;3871:12;3840:45;3931:6;3926:3;3919:4;3911:6;3907:17;3894:44;3986:1;3979:4;3970:6;3962;3958:19;3954:30;3947:41;;;;3363:631;;;;;:::o;3999:666::-;4094:6;4102;4110;4118;4171:3;4159:9;4150:7;4146:23;4142:33;4139:53;;;4188:1;4185;4178:12;4139:53;4211:29;4230:9;4211:29;:::i;:::-;4201:39;;4259:38;4293:2;4282:9;4278:18;4259:38;:::i;:::-;4249:48;;4344:2;4333:9;4329:18;4316:32;4306:42;;4399:2;4388:9;4384:18;4371:32;4426:18;4418:6;4415:30;4412:50;;;4458:1;4455;4448:12;4412:50;4481:22;;4534:4;4526:13;;4522:27;-1:-1:-1;4512:55:56;;4563:1;4560;4553:12;4512:55;4586:73;4651:7;4646:2;4633:16;4628:2;4624;4620:11;4586:73;:::i;:::-;4576:83;;;3999:666;;;;;;;:::o;4670:592::-;4757:6;4765;4773;4826:2;4814:9;4805:7;4801:23;4797:32;4794:52;;;4842:1;4839;4832:12;4794:52;4865:29;4884:9;4865:29;:::i;:::-;4855:39;;4941:2;4930:9;4926:18;4913:32;4903:42;;4996:2;4985:9;4981:18;4968:32;5023:18;5015:6;5012:30;5009:50;;;5055:1;5052;5045:12;5009:50;5078:22;;5131:4;5123:13;;5119:27;-1:-1:-1;5109:55:56;;5160:1;5157;5150:12;5109:55;5183:73;5248:7;5243:2;5230:16;5225:2;5221;5217:11;5183:73;:::i;:::-;5173:83;;;4670:592;;;;;:::o;5267:260::-;5335:6;5343;5396:2;5384:9;5375:7;5371:23;5367:32;5364:52;;;5412:1;5409;5402:12;5364:52;5435:29;5454:9;5435:29;:::i;:::-;5425:39;;5483:38;5517:2;5506:9;5502:18;5483:38;:::i;:::-;5473:48;;5267:260;;;;;:::o;5532:380::-;5611:1;5607:12;;;;5654;;;5675:61;;5729:4;5721:6;5717:17;5707:27;;5675:61;5782:2;5774:6;5771:14;5751:18;5748:38;5745:161;;;5828:10;5823:3;5819:20;5816:1;5809:31;5863:4;5860:1;5853:15;5891:4;5888:1;5881:15;5745:161;;5532:380;;;:::o;7157:413::-;7359:2;7341:21;;;7398:2;7378:18;;;7371:30;7437:34;7432:2;7417:18;;7410:62;-1:-1:-1;;;7503:2:56;7488:18;;7481:47;7560:3;7545:19;;7157:413::o;8813:356::-;9015:2;8997:21;;;9034:18;;;9027:30;9093:34;9088:2;9073:18;;9066:62;9160:2;9145:18;;8813:356::o;10805:127::-;10866:10;10861:3;10857:20;10854:1;10847:31;10897:4;10894:1;10887:15;10921:4;10918:1;10911:15;10937:125;10977:4;11005:1;11002;10999:8;10996:34;;;11010:18;;:::i;:::-;-1:-1:-1;11047:9:56;;10937:125::o;11067:128::-;11107:3;11138:1;11134:6;11131:1;11128:13;11125:39;;;11144:18;;:::i;:::-;-1:-1:-1;11180:9:56;;11067:128::o;11554:414::-;11756:2;11738:21;;;11795:2;11775:18;;;11768:30;11834:34;11829:2;11814:18;;11807:62;-1:-1:-1;;;11900:2:56;11885:18;;11878:48;11958:3;11943:19;;11554:414::o;12391:470::-;12570:3;12608:6;12602:13;12624:53;12670:6;12665:3;12658:4;12650:6;12646:17;12624:53;:::i;:::-;12740:13;;12699:16;;;;12762:57;12740:13;12699:16;12796:4;12784:17;;12762:57;:::i;:::-;12835:20;;12391:470;-1:-1:-1;;;;12391:470:56:o;13281:489::-;-1:-1:-1;;;;;13550:15:56;;;13532:34;;13602:15;;13597:2;13582:18;;13575:43;13649:2;13634:18;;13627:34;;;13697:3;13692:2;13677:18;;13670:31;;;13475:4;;13718:46;;13744:19;;13736:6;13718:46;:::i;:::-;13710:54;13281:489;-1:-1:-1;;;;;;13281:489:56:o;13775:249::-;13844:6;13897:2;13885:9;13876:7;13872:23;13868:32;13865:52;;;13913:1;13910;13903:12;13865:52;13945:9;13939:16;13964:30;13988:5;13964:30;:::i;14445:135::-;14484:3;-1:-1:-1;;14505:17:56;;14502:43;;;14525:18;;:::i;:::-;-1:-1:-1;14572:1:56;14561:13;;14445:135::o;14585:127::-;14646:10;14641:3;14637:20;14634:1;14627:31;14677:4;14674:1;14667:15;14701:4;14698:1;14691:15;14717:120;14757:1;14783;14773:35;;14788:18;;:::i;:::-;-1:-1:-1;14822:9:56;;14717:120::o;14842:112::-;14874:1;14900;14890:35;;14905:18;;:::i;:::-;-1:-1:-1;14939:9:56;;14842:112::o;14959:127::-;15020:10;15015:3;15011:20;15008:1;15001:31;15051:4;15048:1;15041:15;15075:4;15072:1;15065:15",
  "source": "// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity ^0.8.11;\n\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/extensions/ERC721Burnable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"./interfaces/IERC721Custom.sol\";\n\ncontract ERC721Custom is\n    ERC721,\n    ERC721URIStorage,\n    ERC721Burnable,\n    Ownable,\n    IERC721Custom\n{\n    constructor(string memory _name, string memory _symbol)\n        ERC721(_name, _symbol)\n    {}\n\n    function safeMint(\n        address to,\n        uint256 tokenId,\n        string memory uri\n    ) public onlyOwner {\n        _safeMint(to, tokenId);\n        _setTokenURI(tokenId, uri);\n    }\n\n    // The following functions are overrides required by Solidity.\n\n    function _burn(uint256 tokenId)\n        internal\n        override(ERC721, ERC721URIStorage)\n    {\n        super._burn(tokenId);\n    }\n\n    function tokenURI(uint256 tokenId)\n        public\n        view\n        override(ERC721, ERC721URIStorage)\n        returns (string memory)\n    {\n        return super.tokenURI(tokenId);\n    }\n}\n",
  "sourcePath": "/Users/yosephks/Documents/GitHub/alpsfinance-smart-contracts/contracts/token/ERC721Custom.sol",
  "ast": {
    "absolutePath": "project:/contracts/token/ERC721Custom.sol",
    "exportedSymbols": {
      "Address": [
        5275
      ],
      "Context": [
        5297
      ],
      "ERC165": [
        6252
      ],
      "ERC721": [
        4661
      ],
      "ERC721Burnable": [
        4825
      ],
      "ERC721Custom": [
        9580
      ],
      "ERC721URIStorage": [
        4953
      ],
      "IERC165": [
        6264
      ],
      "IERC721": [
        4777
      ],
      "IERC721Custom": [
        9658
      ],
      "IERC721Metadata": [
        4980
      ],
      "IERC721Receiver": [
        4795
      ],
      "Ownable": [
        532
      ],
      "Strings": [
        5574
      ]
    },
    "id": 9581,
    "license": "AGPL-3.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 9499,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "38:24:51"
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC721/ERC721.sol",
        "file": "@openzeppelin/contracts/token/ERC721/ERC721.sol",
        "id": 9500,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 9581,
        "sourceUnit": 4662,
        "src": "64:57:51",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol",
        "file": "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol",
        "id": 9501,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 9581,
        "sourceUnit": 4954,
        "src": "122:78:51",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/ERC721Burnable.sol",
        "file": "@openzeppelin/contracts/token/ERC721/extensions/ERC721Burnable.sol",
        "id": 9502,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 9581,
        "sourceUnit": 4826,
        "src": "201:76:51",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
        "file": "@openzeppelin/contracts/access/Ownable.sol",
        "id": 9503,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 9581,
        "sourceUnit": 533,
        "src": "278:52:51",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/token/interfaces/IERC721Custom.sol",
        "file": "./interfaces/IERC721Custom.sol",
        "id": 9504,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 9581,
        "sourceUnit": 9659,
        "src": "331:40:51",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 9505,
              "name": "ERC721",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 4661,
              "src": "402:6:51"
            },
            "id": 9506,
            "nodeType": "InheritanceSpecifier",
            "src": "402:6:51"
          },
          {
            "baseName": {
              "id": 9507,
              "name": "ERC721URIStorage",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 4953,
              "src": "414:16:51"
            },
            "id": 9508,
            "nodeType": "InheritanceSpecifier",
            "src": "414:16:51"
          },
          {
            "baseName": {
              "id": 9509,
              "name": "ERC721Burnable",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 4825,
              "src": "436:14:51"
            },
            "id": 9510,
            "nodeType": "InheritanceSpecifier",
            "src": "436:14:51"
          },
          {
            "baseName": {
              "id": 9511,
              "name": "Ownable",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 532,
              "src": "456:7:51"
            },
            "id": 9512,
            "nodeType": "InheritanceSpecifier",
            "src": "456:7:51"
          },
          {
            "baseName": {
              "id": 9513,
              "name": "IERC721Custom",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 9658,
              "src": "469:13:51"
            },
            "id": 9514,
            "nodeType": "InheritanceSpecifier",
            "src": "469:13:51"
          }
        ],
        "canonicalName": "ERC721Custom",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 9580,
        "linearizedBaseContracts": [
          9580,
          9658,
          532,
          4825,
          4953,
          4661,
          4980,
          4777,
          6252,
          6264,
          5297
        ],
        "name": "ERC721Custom",
        "nameLocation": "382:12:51",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 9525,
              "nodeType": "Block",
              "src": "580:2:51",
              "statements": []
            },
            "id": 9526,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 9521,
                    "name": "_name",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9516,
                    "src": "560:5:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "id": 9522,
                    "name": "_symbol",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9518,
                    "src": "567:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  }
                ],
                "id": 9523,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 9520,
                  "name": "ERC721",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4661,
                  "src": "553:6:51"
                },
                "nodeType": "ModifierInvocation",
                "src": "553:22:51"
              }
            ],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9519,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9516,
                  "mutability": "mutable",
                  "name": "_name",
                  "nameLocation": "515:5:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 9526,
                  "src": "501:19:51",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9515,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "501:6:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9518,
                  "mutability": "mutable",
                  "name": "_symbol",
                  "nameLocation": "536:7:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 9526,
                  "src": "522:21:51",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9517,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "522:6:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "500:44:51"
            },
            "returnParameters": {
              "id": 9524,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "580:0:51"
            },
            "scope": 9580,
            "src": "489:93:51",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9547,
              "nodeType": "Block",
              "src": "701:75:51",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9538,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9528,
                        "src": "721:2:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 9539,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9530,
                        "src": "725:7:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9537,
                      "name": "_safeMint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4290,
                        4319
                      ],
                      "referencedDeclaration": 4290,
                      "src": "711:9:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 9540,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "711:22:51",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9541,
                  "nodeType": "ExpressionStatement",
                  "src": "711:22:51"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9543,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9530,
                        "src": "756:7:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 9544,
                        "name": "uri",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9532,
                        "src": "765:3:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 9542,
                      "name": "_setTokenURI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4922,
                      "src": "743:12:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (uint256,string memory)"
                      }
                    },
                    "id": 9545,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "743:26:51",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9546,
                  "nodeType": "ExpressionStatement",
                  "src": "743:26:51"
                }
              ]
            },
            "functionSelector": "cd279c7c",
            "id": 9548,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 9535,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 9534,
                  "name": "onlyOwner",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 474,
                  "src": "691:9:51"
                },
                "nodeType": "ModifierInvocation",
                "src": "691:9:51"
              }
            ],
            "name": "safeMint",
            "nameLocation": "597:8:51",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9533,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9528,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "623:2:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 9548,
                  "src": "615:10:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9527,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "615:7:51",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9530,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "643:7:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 9548,
                  "src": "635:15:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9529,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "635:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9532,
                  "mutability": "mutable",
                  "name": "uri",
                  "nameLocation": "674:3:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 9548,
                  "src": "660:17:51",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9531,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "660:6:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "605:78:51"
            },
            "returnParameters": {
              "id": 9536,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "701:0:51"
            },
            "scope": 9580,
            "src": "588:188:51",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              4445,
              4952
            ],
            "body": {
              "id": 9562,
              "nodeType": "Block",
              "src": "946:37:51",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9559,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9550,
                        "src": "968:7:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 9556,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967271,
                        "src": "956:5:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_super$_ERC721Custom_$9580_$",
                          "typeString": "type(contract super ERC721Custom)"
                        }
                      },
                      "id": 9558,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_burn",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4952,
                      "src": "956:11:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 9560,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "956:20:51",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9561,
                  "nodeType": "ExpressionStatement",
                  "src": "956:20:51"
                }
              ]
            },
            "id": 9563,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_burn",
            "nameLocation": "859:5:51",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9554,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "id": 9552,
                  "name": "ERC721",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4661,
                  "src": "916:6:51"
                },
                {
                  "id": 9553,
                  "name": "ERC721URIStorage",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4953,
                  "src": "924:16:51"
                }
              ],
              "src": "907:34:51"
            },
            "parameters": {
              "id": 9551,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9550,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "873:7:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 9563,
                  "src": "865:15:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9549,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "865:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "864:17:51"
            },
            "returnParameters": {
              "id": 9555,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "946:0:51"
            },
            "scope": 9580,
            "src": "850:133:51",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              4003,
              4900
            ],
            "body": {
              "id": 9578,
              "nodeType": "Block",
              "src": "1131:47:51",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9575,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9565,
                        "src": "1163:7:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 9573,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967271,
                        "src": "1148:5:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_super$_ERC721Custom_$9580_$",
                          "typeString": "type(contract super ERC721Custom)"
                        }
                      },
                      "id": 9574,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "tokenURI",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4900,
                      "src": "1148:14:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (uint256) view returns (string memory)"
                      }
                    },
                    "id": 9576,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1148:23:51",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 9572,
                  "id": 9577,
                  "nodeType": "Return",
                  "src": "1141:30:51"
                }
              ]
            },
            "functionSelector": "c87b56dd",
            "id": 9579,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "tokenURI",
            "nameLocation": "998:8:51",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9569,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "id": 9567,
                  "name": "ERC721",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4661,
                  "src": "1069:6:51"
                },
                {
                  "id": 9568,
                  "name": "ERC721URIStorage",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4953,
                  "src": "1077:16:51"
                }
              ],
              "src": "1060:34:51"
            },
            "parameters": {
              "id": 9566,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9565,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "1015:7:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 9579,
                  "src": "1007:15:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9564,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1007:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1006:17:51"
            },
            "returnParameters": {
              "id": 9572,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9571,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9579,
                  "src": "1112:13:51",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9570,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1112:6:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1111:15:51"
            },
            "scope": 9580,
            "src": "989:189:51",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 9581,
        "src": "373:807:51",
        "usedErrors": []
      }
    ],
    "src": "38:1143:51"
  },
  "legacyAST": {
    "absolutePath": "project:/contracts/token/ERC721Custom.sol",
    "exportedSymbols": {
      "Address": [
        5275
      ],
      "Context": [
        5297
      ],
      "ERC165": [
        6252
      ],
      "ERC721": [
        4661
      ],
      "ERC721Burnable": [
        4825
      ],
      "ERC721Custom": [
        9580
      ],
      "ERC721URIStorage": [
        4953
      ],
      "IERC165": [
        6264
      ],
      "IERC721": [
        4777
      ],
      "IERC721Custom": [
        9658
      ],
      "IERC721Metadata": [
        4980
      ],
      "IERC721Receiver": [
        4795
      ],
      "Ownable": [
        532
      ],
      "Strings": [
        5574
      ]
    },
    "id": 9581,
    "license": "AGPL-3.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 9499,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "38:24:51"
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC721/ERC721.sol",
        "file": "@openzeppelin/contracts/token/ERC721/ERC721.sol",
        "id": 9500,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 9581,
        "sourceUnit": 4662,
        "src": "64:57:51",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol",
        "file": "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol",
        "id": 9501,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 9581,
        "sourceUnit": 4954,
        "src": "122:78:51",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/ERC721Burnable.sol",
        "file": "@openzeppelin/contracts/token/ERC721/extensions/ERC721Burnable.sol",
        "id": 9502,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 9581,
        "sourceUnit": 4826,
        "src": "201:76:51",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
        "file": "@openzeppelin/contracts/access/Ownable.sol",
        "id": 9503,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 9581,
        "sourceUnit": 533,
        "src": "278:52:51",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/token/interfaces/IERC721Custom.sol",
        "file": "./interfaces/IERC721Custom.sol",
        "id": 9504,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 9581,
        "sourceUnit": 9659,
        "src": "331:40:51",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 9505,
              "name": "ERC721",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 4661,
              "src": "402:6:51"
            },
            "id": 9506,
            "nodeType": "InheritanceSpecifier",
            "src": "402:6:51"
          },
          {
            "baseName": {
              "id": 9507,
              "name": "ERC721URIStorage",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 4953,
              "src": "414:16:51"
            },
            "id": 9508,
            "nodeType": "InheritanceSpecifier",
            "src": "414:16:51"
          },
          {
            "baseName": {
              "id": 9509,
              "name": "ERC721Burnable",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 4825,
              "src": "436:14:51"
            },
            "id": 9510,
            "nodeType": "InheritanceSpecifier",
            "src": "436:14:51"
          },
          {
            "baseName": {
              "id": 9511,
              "name": "Ownable",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 532,
              "src": "456:7:51"
            },
            "id": 9512,
            "nodeType": "InheritanceSpecifier",
            "src": "456:7:51"
          },
          {
            "baseName": {
              "id": 9513,
              "name": "IERC721Custom",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 9658,
              "src": "469:13:51"
            },
            "id": 9514,
            "nodeType": "InheritanceSpecifier",
            "src": "469:13:51"
          }
        ],
        "canonicalName": "ERC721Custom",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 9580,
        "linearizedBaseContracts": [
          9580,
          9658,
          532,
          4825,
          4953,
          4661,
          4980,
          4777,
          6252,
          6264,
          5297
        ],
        "name": "ERC721Custom",
        "nameLocation": "382:12:51",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 9525,
              "nodeType": "Block",
              "src": "580:2:51",
              "statements": []
            },
            "id": 9526,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 9521,
                    "name": "_name",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9516,
                    "src": "560:5:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "id": 9522,
                    "name": "_symbol",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9518,
                    "src": "567:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  }
                ],
                "id": 9523,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 9520,
                  "name": "ERC721",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4661,
                  "src": "553:6:51"
                },
                "nodeType": "ModifierInvocation",
                "src": "553:22:51"
              }
            ],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9519,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9516,
                  "mutability": "mutable",
                  "name": "_name",
                  "nameLocation": "515:5:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 9526,
                  "src": "501:19:51",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9515,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "501:6:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9518,
                  "mutability": "mutable",
                  "name": "_symbol",
                  "nameLocation": "536:7:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 9526,
                  "src": "522:21:51",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9517,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "522:6:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "500:44:51"
            },
            "returnParameters": {
              "id": 9524,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "580:0:51"
            },
            "scope": 9580,
            "src": "489:93:51",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9547,
              "nodeType": "Block",
              "src": "701:75:51",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9538,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9528,
                        "src": "721:2:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 9539,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9530,
                        "src": "725:7:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9537,
                      "name": "_safeMint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4290,
                        4319
                      ],
                      "referencedDeclaration": 4290,
                      "src": "711:9:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 9540,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "711:22:51",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9541,
                  "nodeType": "ExpressionStatement",
                  "src": "711:22:51"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9543,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9530,
                        "src": "756:7:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 9544,
                        "name": "uri",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9532,
                        "src": "765:3:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 9542,
                      "name": "_setTokenURI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4922,
                      "src": "743:12:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (uint256,string memory)"
                      }
                    },
                    "id": 9545,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "743:26:51",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9546,
                  "nodeType": "ExpressionStatement",
                  "src": "743:26:51"
                }
              ]
            },
            "functionSelector": "cd279c7c",
            "id": 9548,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 9535,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 9534,
                  "name": "onlyOwner",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 474,
                  "src": "691:9:51"
                },
                "nodeType": "ModifierInvocation",
                "src": "691:9:51"
              }
            ],
            "name": "safeMint",
            "nameLocation": "597:8:51",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9533,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9528,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "623:2:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 9548,
                  "src": "615:10:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9527,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "615:7:51",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9530,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "643:7:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 9548,
                  "src": "635:15:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9529,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "635:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9532,
                  "mutability": "mutable",
                  "name": "uri",
                  "nameLocation": "674:3:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 9548,
                  "src": "660:17:51",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9531,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "660:6:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "605:78:51"
            },
            "returnParameters": {
              "id": 9536,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "701:0:51"
            },
            "scope": 9580,
            "src": "588:188:51",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              4445,
              4952
            ],
            "body": {
              "id": 9562,
              "nodeType": "Block",
              "src": "946:37:51",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9559,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9550,
                        "src": "968:7:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 9556,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967271,
                        "src": "956:5:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_super$_ERC721Custom_$9580_$",
                          "typeString": "type(contract super ERC721Custom)"
                        }
                      },
                      "id": 9558,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_burn",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4952,
                      "src": "956:11:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 9560,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "956:20:51",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9561,
                  "nodeType": "ExpressionStatement",
                  "src": "956:20:51"
                }
              ]
            },
            "id": 9563,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_burn",
            "nameLocation": "859:5:51",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9554,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "id": 9552,
                  "name": "ERC721",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4661,
                  "src": "916:6:51"
                },
                {
                  "id": 9553,
                  "name": "ERC721URIStorage",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4953,
                  "src": "924:16:51"
                }
              ],
              "src": "907:34:51"
            },
            "parameters": {
              "id": 9551,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9550,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "873:7:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 9563,
                  "src": "865:15:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9549,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "865:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "864:17:51"
            },
            "returnParameters": {
              "id": 9555,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "946:0:51"
            },
            "scope": 9580,
            "src": "850:133:51",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              4003,
              4900
            ],
            "body": {
              "id": 9578,
              "nodeType": "Block",
              "src": "1131:47:51",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 9575,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9565,
                        "src": "1163:7:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 9573,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967271,
                        "src": "1148:5:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_super$_ERC721Custom_$9580_$",
                          "typeString": "type(contract super ERC721Custom)"
                        }
                      },
                      "id": 9574,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "tokenURI",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4900,
                      "src": "1148:14:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (uint256) view returns (string memory)"
                      }
                    },
                    "id": 9576,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1148:23:51",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 9572,
                  "id": 9577,
                  "nodeType": "Return",
                  "src": "1141:30:51"
                }
              ]
            },
            "functionSelector": "c87b56dd",
            "id": 9579,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "tokenURI",
            "nameLocation": "998:8:51",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 9569,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "id": 9567,
                  "name": "ERC721",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4661,
                  "src": "1069:6:51"
                },
                {
                  "id": 9568,
                  "name": "ERC721URIStorage",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4953,
                  "src": "1077:16:51"
                }
              ],
              "src": "1060:34:51"
            },
            "parameters": {
              "id": 9566,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9565,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "1015:7:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 9579,
                  "src": "1007:15:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9564,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1007:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1006:17:51"
            },
            "returnParameters": {
              "id": 9572,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9571,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 9579,
                  "src": "1112:13:51",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9570,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1112:6:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1111:15:51"
            },
            "scope": 9580,
            "src": "989:189:51",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 9581,
        "src": "373:807:51",
        "usedErrors": []
      }
    ],
    "src": "38:1143:51"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.11+commit.d7f03943.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.4",
  "updatedAt": "2022-03-06T23:47:11.131Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "approve(address,uint256)": {
        "details": "See {IERC721-approve}."
      },
      "balanceOf(address)": {
        "details": "See {IERC721-balanceOf}."
      },
      "burn(uint256)": {
        "details": "Burns `tokenId`. See {ERC721-_burn}. Requirements: - The caller must own `tokenId` or be an approved operator."
      },
      "getApproved(uint256)": {
        "details": "See {IERC721-getApproved}."
      },
      "isApprovedForAll(address,address)": {
        "details": "See {IERC721-isApprovedForAll}."
      },
      "name()": {
        "details": "See {IERC721Metadata-name}."
      },
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "ownerOf(uint256)": {
        "details": "See {IERC721-ownerOf}."
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "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}."
      },
      "transferFrom(address,address,uint256)": {
        "details": "See {IERC721-transferFrom}."
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}