{
  "id": "18690c55f1c453ea63dcb57d65da7b9c",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.8.13",
  "solcLongVersion": "0.8.13+commit.abaa5c0e",
  "input": {
    "language": "Solidity",
    "sources": {
      "src/contracts/test/TestERC721.sol.sol": {
        "content": "//SPDX-License-Identifier: Unlicense\npragma solidity >=0.8.7;\n\nimport \"@rari-capital/solmate/src/tokens/ERC721.sol\";\n\n// Used for minting test ERC721s in our tests\ncontract TestERC721 is ERC721(\"Test721\", \"TST721\") {\n    function mint(address to, uint256 tokenId) public returns (bool) {\n        _mint(to, tokenId);\n        return true;\n    }\n\n    function tokenURI(uint256) public pure override returns (string memory) {\n        return \"tokenURI\";\n    }\n}\n"
      },
      "@rari-capital/solmate/src/tokens/ERC721.sol": {
        "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity >=0.8.0;\n\n/// @notice Modern, minimalist, and gas efficient ERC-721 implementation.\n/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)\n/// @dev Note that balanceOf does not revert if passed the zero address, in defiance of the ERC.\nabstract contract ERC721 {\n    /*///////////////////////////////////////////////////////////////\n                                 EVENTS\n    //////////////////////////////////////////////////////////////*/\n\n    event Transfer(address indexed from, address indexed to, uint256 indexed id);\n\n    event Approval(address indexed owner, address indexed spender, uint256 indexed id);\n\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n    /*///////////////////////////////////////////////////////////////\n                          METADATA STORAGE/LOGIC\n    //////////////////////////////////////////////////////////////*/\n\n    string public name;\n\n    string public symbol;\n\n    function tokenURI(uint256 id) public view virtual returns (string memory);\n\n    /*///////////////////////////////////////////////////////////////\n                            ERC721 STORAGE                        \n    //////////////////////////////////////////////////////////////*/\n\n    mapping(address => uint256) public balanceOf;\n\n    mapping(uint256 => address) public ownerOf;\n\n    mapping(uint256 => address) public getApproved;\n\n    mapping(address => mapping(address => bool)) public isApprovedForAll;\n\n    /*///////////////////////////////////////////////////////////////\n                              CONSTRUCTOR\n    //////////////////////////////////////////////////////////////*/\n\n    constructor(string memory _name, string memory _symbol) {\n        name = _name;\n        symbol = _symbol;\n    }\n\n    /*///////////////////////////////////////////////////////////////\n                              ERC721 LOGIC\n    //////////////////////////////////////////////////////////////*/\n\n    function approve(address spender, uint256 id) public virtual {\n        address owner = ownerOf[id];\n\n        require(msg.sender == owner || isApprovedForAll[owner][msg.sender], \"NOT_AUTHORIZED\");\n\n        getApproved[id] = spender;\n\n        emit Approval(owner, spender, id);\n    }\n\n    function setApprovalForAll(address operator, bool approved) public virtual {\n        isApprovedForAll[msg.sender][operator] = approved;\n\n        emit ApprovalForAll(msg.sender, operator, approved);\n    }\n\n    function transferFrom(\n        address from,\n        address to,\n        uint256 id\n    ) public virtual {\n        require(from == ownerOf[id], \"WRONG_FROM\");\n\n        require(to != address(0), \"INVALID_RECIPIENT\");\n\n        require(\n            msg.sender == from || msg.sender == getApproved[id] || isApprovedForAll[from][msg.sender],\n            \"NOT_AUTHORIZED\"\n        );\n\n        // Underflow of the sender's balance is impossible because we check for\n        // ownership above and the recipient's balance can't realistically overflow.\n        unchecked {\n            balanceOf[from]--;\n\n            balanceOf[to]++;\n        }\n\n        ownerOf[id] = to;\n\n        delete getApproved[id];\n\n        emit Transfer(from, to, id);\n    }\n\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 id\n    ) public virtual {\n        transferFrom(from, to, id);\n\n        require(\n            to.code.length == 0 ||\n                ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, \"\") ==\n                ERC721TokenReceiver.onERC721Received.selector,\n            \"UNSAFE_RECIPIENT\"\n        );\n    }\n\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 id,\n        bytes memory data\n    ) public virtual {\n        transferFrom(from, to, id);\n\n        require(\n            to.code.length == 0 ||\n                ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, data) ==\n                ERC721TokenReceiver.onERC721Received.selector,\n            \"UNSAFE_RECIPIENT\"\n        );\n    }\n\n    /*///////////////////////////////////////////////////////////////\n                              ERC165 LOGIC\n    //////////////////////////////////////////////////////////////*/\n\n    function supportsInterface(bytes4 interfaceId) public pure virtual returns (bool) {\n        return\n            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165\n            interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721\n            interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata\n    }\n\n    /*///////////////////////////////////////////////////////////////\n                       INTERNAL MINT/BURN LOGIC\n    //////////////////////////////////////////////////////////////*/\n\n    function _mint(address to, uint256 id) internal virtual {\n        require(to != address(0), \"INVALID_RECIPIENT\");\n\n        require(ownerOf[id] == address(0), \"ALREADY_MINTED\");\n\n        // Counter overflow is incredibly unrealistic.\n        unchecked {\n            balanceOf[to]++;\n        }\n\n        ownerOf[id] = to;\n\n        emit Transfer(address(0), to, id);\n    }\n\n    function _burn(uint256 id) internal virtual {\n        address owner = ownerOf[id];\n\n        require(ownerOf[id] != address(0), \"NOT_MINTED\");\n\n        // Ownership check above ensures no underflow.\n        unchecked {\n            balanceOf[owner]--;\n        }\n\n        delete ownerOf[id];\n\n        delete getApproved[id];\n\n        emit Transfer(owner, address(0), id);\n    }\n\n    /*///////////////////////////////////////////////////////////////\n                       INTERNAL SAFE MINT LOGIC\n    //////////////////////////////////////////////////////////////*/\n\n    function _safeMint(address to, uint256 id) internal virtual {\n        _mint(to, id);\n\n        require(\n            to.code.length == 0 ||\n                ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, \"\") ==\n                ERC721TokenReceiver.onERC721Received.selector,\n            \"UNSAFE_RECIPIENT\"\n        );\n    }\n\n    function _safeMint(\n        address to,\n        uint256 id,\n        bytes memory data\n    ) internal virtual {\n        _mint(to, id);\n\n        require(\n            to.code.length == 0 ||\n                ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, data) ==\n                ERC721TokenReceiver.onERC721Received.selector,\n            \"UNSAFE_RECIPIENT\"\n        );\n    }\n}\n\n/// @notice A generic interface for a contract which properly accepts ERC721 tokens.\n/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)\ninterface ERC721TokenReceiver {\n    function onERC721Received(\n        address operator,\n        address from,\n        uint256 id,\n        bytes calldata data\n    ) external returns (bytes4);\n}\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers",
            "metadata"
          ],
          "": [
            "ast"
          ]
        }
      }
    }
  },
  "output": {
    "contracts": {
      "@rari-capital/solmate/src/tokens/ERC721.sol": {
        "ERC721": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "getApproved",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "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": "id",
                  "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": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "id",
                  "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": "id",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "getApproved(uint256)": "081812fc",
              "isApprovedForAll(address,address)": "e985e9c5",
              "name()": "06fdde03",
              "ownerOf(uint256)": "6352211e",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenURI(uint256)": "c87b56dd",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"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\":\"id\",\"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\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"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\":\"id\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)\",\"details\":\"Note that balanceOf does not revert if passed the zero address, in defiance of the ERC.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Modern, minimalist, and gas efficient ERC-721 implementation.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@rari-capital/solmate/src/tokens/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@rari-capital/solmate/src/tokens/ERC721.sol\":{\"keccak256\":\"0xf97378ab999188b3d5d97037fabbecbc726892c74cba6536899b852eb4756d6a\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://a1861567f931416ad6b4b461fb55c7819461e9bc130a416892906f65d9d2b92c\",\"dweb:/ipfs/QmYRkJ6ahJz8BhdbntkgSuLxvKtwdLRyCCny9R3dVvNQm5\"]}},\"version\":1}"
        },
        "ERC721TokenReceiver": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "onERC721Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "onERC721Received(address,address,uint256,bytes)": "150b7a02"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A generic interface for a contract which properly accepts ERC721 tokens.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@rari-capital/solmate/src/tokens/ERC721.sol\":\"ERC721TokenReceiver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@rari-capital/solmate/src/tokens/ERC721.sol\":{\"keccak256\":\"0xf97378ab999188b3d5d97037fabbecbc726892c74cba6536899b852eb4756d6a\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://a1861567f931416ad6b4b461fb55c7819461e9bc130a416892906f65d9d2b92c\",\"dweb:/ipfs/QmYRkJ6ahJz8BhdbntkgSuLxvKtwdLRyCCny9R3dVvNQm5\"]}},\"version\":1}"
        }
      },
      "src/contracts/test/TestERC721.sol.sol": {
        "TestERC721": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "getApproved",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "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": "id",
                  "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": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "tokenURI",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_71": {
                  "entryPoint": null,
                  "id": 71,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "extract_byte_array_length": {
                  "entryPoint": 292,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:396:2",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:2",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "69:325:2",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "79:22:2",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "93:1:2",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "96:4:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "89:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "89:12:2"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "79:6:2"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "110:38:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "140:4:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "146:1:2",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "136:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "136:12:2"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "114:18:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "187:31:2",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "189:27:2",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "203:6:2"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "211:4:2",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "199:3:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "199:17:2"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "189:6:2"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "167:18:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "160:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "160:26:2"
                              },
                              "nodeType": "YulIf",
                              "src": "157:61:2"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "277:111:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "298:1:2",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "305:3:2",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "310:10:2",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "301:3:2"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "301:20:2"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "291:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "291:31:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "291:31:2"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "342:1:2",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "345:4:2",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "335:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "335:15:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "335:15:2"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "370:1:2",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "373:4:2",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "363:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "363:15:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "363:15:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "233:18:2"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "256:6:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "264:2:2",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "253:2:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "253:14:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "230:2:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "230:38:2"
                              },
                              "nodeType": "YulIf",
                              "src": "227:161:2"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "49:4:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "58:6:2",
                            "type": ""
                          }
                        ],
                        "src": "14:380:2"
                      }
                    ]
                  },
                  "contents": "{\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": 2,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b5060408051808201825260078152665465737437323160c81b60208083019182528351808501909452600684526554535437323160d01b9084015281519192916200005f916000916200007e565b508051620000759060019060208401906200007e565b50505062000160565b8280546200008c9062000124565b90600052602060002090601f016020900481019282620000b05760008555620000fb565b82601f10620000cb57805160ff1916838001178555620000fb565b82800160010185558215620000fb579182015b82811115620000fb578251825591602001919060010190620000de565b50620001099291506200010d565b5090565b5b808211156200010957600081556001016200010e565b600181811c908216806200013957607f821691505b6020821081036200015a57634e487b7160e01b600052602260045260246000fd5b50919050565b610d2180620001706000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb4651461021a578063b88d4fde1461022d578063c87b56dd14610240578063e985e9c51461027157600080fd5b80636352211e146101bb57806370a08231146101e457806395d89b411461021257600080fd5b8063095ea7b3116100c8578063095ea7b31461016d57806323b872dd1461018257806340c10f191461019557806342842e0e146101a857600080fd5b806301ffc9a7146100ef57806306fdde0314610117578063081812fc1461012c575b600080fd5b6101026100fd3660046109bc565b61029f565b60405190151581526020015b60405180910390f35b61011f6102f1565b60405161010e9190610a2d565b61015561013a366004610a40565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161010e565b61018061017b366004610a75565b61037f565b005b610180610190366004610a9f565b610466565b6101026101a3366004610a75565b61062d565b6101806101b6366004610a9f565b610642565b6101556101c9366004610a40565b6003602052600090815260409020546001600160a01b031681565b6102046101f2366004610adb565b60026020526000908152604090205481565b60405190815260200161010e565b61011f61073a565b610180610228366004610af6565b610747565b61018061023b366004610b48565b6107b3565b61011f61024e366004610a40565b50604080518082019091526008815267746f6b656e55524960c01b602082015290565b61010261027f366004610c24565b600560209081526000928352604080842090915290825290205460ff1681565b60006301ffc9a760e01b6001600160e01b0319831614806102d057506380ac58cd60e01b6001600160e01b03198316145b806102eb5750635b5e139f60e01b6001600160e01b03198316145b92915050565b600080546102fe90610c57565b80601f016020809104026020016040519081016040528092919081815260200182805461032a90610c57565b80156103775780601f1061034c57610100808354040283529160200191610377565b820191906000526020600020905b81548152906001019060200180831161035a57829003601f168201915b505050505081565b6000818152600360205260409020546001600160a01b0316338114806103c857506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b61040a5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000818152600360205260409020546001600160a01b038481169116146104bc5760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b6044820152606401610401565b6001600160a01b0382166105065760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610401565b336001600160a01b038416148061053357506000818152600460205260409020546001600160a01b031633145b8061056157506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b61059e5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610401565b6001600160a01b0380841660008181526002602090815260408083208054600019019055938616808352848320805460010190558583526003825284832080546001600160a01b03199081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60006106398383610898565b50600192915050565b61064d838383610466565b6001600160a01b0382163b15806106f65750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af11580156106c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ea9190610c91565b6001600160e01b031916145b6107355760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610401565b505050565b600180546102fe90610c57565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6107be848484610466565b6001600160a01b0383163b15806108535750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a0290610804903390899088908890600401610cae565b6020604051808303816000875af1158015610823573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108479190610c91565b6001600160e01b031916145b6108925760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610401565b50505050565b6001600160a01b0382166108e25760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610401565b6000818152600360205260409020546001600160a01b0316156109385760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b6044820152606401610401565b6001600160a01b038216600081815260026020908152604080832080546001019055848352600390915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b0319811681146109b957600080fd5b50565b6000602082840312156109ce57600080fd5b81356109d9816109a3565b9392505050565b6000815180845260005b81811015610a06576020818501810151868301820152016109ea565b81811115610a18576000602083870101525b50601f01601f19169290920160200192915050565b6020815260006109d960208301846109e0565b600060208284031215610a5257600080fd5b5035919050565b80356001600160a01b0381168114610a7057600080fd5b919050565b60008060408385031215610a8857600080fd5b610a9183610a59565b946020939093013593505050565b600080600060608486031215610ab457600080fd5b610abd84610a59565b9250610acb60208501610a59565b9150604084013590509250925092565b600060208284031215610aed57600080fd5b6109d982610a59565b60008060408385031215610b0957600080fd5b610b1283610a59565b915060208301358015158114610b2757600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610b5e57600080fd5b610b6785610a59565b9350610b7560208601610a59565b925060408501359150606085013567ffffffffffffffff80821115610b9957600080fd5b818701915087601f830112610bad57600080fd5b813581811115610bbf57610bbf610b32565b604051601f8201601f19908116603f01168101908382118183101715610be757610be7610b32565b816040528281528a6020848701011115610c0057600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610c3757600080fd5b610c4083610a59565b9150610c4e60208401610a59565b90509250929050565b600181811c90821680610c6b57607f821691505b602082108103610c8b57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610ca357600080fd5b81516109d9816109a3565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090610ce1908301846109e0565b969550505050505056fea2646970667358221220e08b7719d5fe77997a730c7abdff8f0fb2998e7da9e1137593ce63458f9d933c64736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x7 DUP2 MSTORE PUSH7 0x54657374373231 PUSH1 0xC8 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE PUSH1 0x6 DUP5 MSTORE PUSH6 0x545354373231 PUSH1 0xD0 SHL SWAP1 DUP5 ADD MSTORE DUP2 MLOAD SWAP2 SWAP3 SWAP2 PUSH3 0x5F SWAP2 PUSH1 0x0 SWAP2 PUSH3 0x7E JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x75 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x7E JUMP JUMPDEST POP POP POP PUSH3 0x160 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x8C SWAP1 PUSH3 0x124 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0xB0 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0xFB JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0xCB JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0xFB JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0xFB JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0xFB JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xDE JUMP JUMPDEST POP PUSH3 0x109 SWAP3 SWAP2 POP PUSH3 0x10D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x109 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x10E JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x139 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x15A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD21 DUP1 PUSH3 0x170 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x21A JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x22D JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x1BB JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1E4 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x212 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x117 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x12C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0x9BC JUMP JUMPDEST PUSH2 0x29F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11F PUSH2 0x2F1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10E SWAP2 SWAP1 PUSH2 0xA2D JUMP JUMPDEST PUSH2 0x155 PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0xA40 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST PUSH2 0x180 PUSH2 0x17B CALLDATASIZE PUSH1 0x4 PUSH2 0xA75 JUMP JUMPDEST PUSH2 0x37F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x180 PUSH2 0x190 CALLDATASIZE PUSH1 0x4 PUSH2 0xA9F JUMP JUMPDEST PUSH2 0x466 JUMP JUMPDEST PUSH2 0x102 PUSH2 0x1A3 CALLDATASIZE PUSH1 0x4 PUSH2 0xA75 JUMP JUMPDEST PUSH2 0x62D JUMP JUMPDEST PUSH2 0x180 PUSH2 0x1B6 CALLDATASIZE PUSH1 0x4 PUSH2 0xA9F JUMP JUMPDEST PUSH2 0x642 JUMP JUMPDEST PUSH2 0x155 PUSH2 0x1C9 CALLDATASIZE PUSH1 0x4 PUSH2 0xA40 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x204 PUSH2 0x1F2 CALLDATASIZE PUSH1 0x4 PUSH2 0xADB JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST PUSH2 0x11F PUSH2 0x73A JUMP JUMPDEST PUSH2 0x180 PUSH2 0x228 CALLDATASIZE PUSH1 0x4 PUSH2 0xAF6 JUMP JUMPDEST PUSH2 0x747 JUMP JUMPDEST PUSH2 0x180 PUSH2 0x23B CALLDATASIZE PUSH1 0x4 PUSH2 0xB48 JUMP JUMPDEST PUSH2 0x7B3 JUMP JUMPDEST PUSH2 0x11F PUSH2 0x24E CALLDATASIZE PUSH1 0x4 PUSH2 0xA40 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x8 DUP2 MSTORE PUSH8 0x746F6B656E555249 PUSH1 0xC0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x102 PUSH2 0x27F CALLDATASIZE PUSH1 0x4 PUSH2 0xC24 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ DUP1 PUSH2 0x2D0 JUMPI POP PUSH4 0x80AC58CD PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST DUP1 PUSH2 0x2EB JUMPI POP PUSH4 0x5B5E139F PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0x2FE SWAP1 PUSH2 0xC57 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x32A SWAP1 PUSH2 0xC57 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x377 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x34C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x377 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x35A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ DUP1 PUSH2 0x3C8 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x40A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x1393D517D055551213D492569151 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP6 SWAP4 SWAP2 DUP6 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ PUSH2 0x4BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH10 0x57524F4E475F46524F4D PUSH1 0xB0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x401 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x506 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x1253959053125117D49150D25412515395 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x401 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ DUP1 PUSH2 0x533 JUMPI POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST DUP1 PUSH2 0x561 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x59E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x1393D517D055551213D492569151 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x401 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE SWAP4 DUP7 AND DUP1 DUP4 MSTORE DUP5 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP6 DUP4 MSTORE PUSH1 0x3 DUP3 MSTORE DUP5 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND DUP4 OR SWAP1 SWAP2 SSTORE PUSH1 0x4 SWAP1 SWAP3 MSTORE DUP5 DUP4 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 AND SWAP1 SWAP2 SSTORE SWAP3 MLOAD DUP5 SWAP4 SWAP3 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x639 DUP4 DUP4 PUSH2 0x898 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x64D DUP4 DUP4 DUP4 PUSH2 0x466 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EXTCODESIZE ISZERO DUP1 PUSH2 0x6F6 JUMPI POP PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP1 DUP3 MSTORE CALLER PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD DUP5 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x64 DUP5 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP5 ADD MSTORE SWAP1 SWAP2 SWAP1 DUP5 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH1 0xA4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6C6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6EA SWAP2 SWAP1 PUSH2 0xC91 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ JUMPDEST PUSH2 0x735 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x155394D0519157D49150D25412515395 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x401 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH2 0x2FE SWAP1 PUSH2 0xC57 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 DUP2 MSTORE SWAP2 SWAP3 SWAP2 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x7BE DUP5 DUP5 DUP5 PUSH2 0x466 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE ISZERO DUP1 PUSH2 0x853 JUMPI POP PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP1 DUP3 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x804 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0xCAE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x823 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x847 SWAP2 SWAP1 PUSH2 0xC91 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ JUMPDEST PUSH2 0x892 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x155394D0519157D49150D25412515395 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x401 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x8E2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x1253959053125117D49150D25412515395 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x401 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x938 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x1053149150511657D35253951151 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x401 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0x3 SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP5 OR SWAP1 SSTORE MLOAD DUP4 SWAP3 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x9B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x9D9 DUP2 PUSH2 0x9A3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA06 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x9EA JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xA18 JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x9D9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x9E0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xA70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA91 DUP4 PUSH2 0xA59 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xAB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xABD DUP5 PUSH2 0xA59 JUMP JUMPDEST SWAP3 POP PUSH2 0xACB PUSH1 0x20 DUP6 ADD PUSH2 0xA59 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9D9 DUP3 PUSH2 0xA59 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB12 DUP4 PUSH2 0xA59 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xB27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xB5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB67 DUP6 PUSH2 0xA59 JUMP JUMPDEST SWAP4 POP PUSH2 0xB75 PUSH1 0x20 DUP7 ADD PUSH2 0xA59 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xB99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xBAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xBBF JUMPI PUSH2 0xBBF PUSH2 0xB32 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xBE7 JUMPI PUSH2 0xBE7 PUSH2 0xB32 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xC00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xC37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC40 DUP4 PUSH2 0xA59 JUMP JUMPDEST SWAP2 POP PUSH2 0xC4E PUSH1 0x20 DUP5 ADD PUSH2 0xA59 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xC6B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xC8B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x9D9 DUP2 PUSH2 0x9A3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0xCE1 SWAP1 DUP4 ADD DUP5 PUSH2 0x9E0 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE0 DUP12 PUSH24 0x19D5FE77997A730C7ABDFF8F0FB2998E7DA9E1137593CE63 GASLIMIT DUP16 SWAP14 SWAP4 EXTCODECOPY PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
              "sourceMap": "164:292:1:-:0;;;;;;;;;;;;-1:-1:-1;1745:111:0;;;;;;;;;;;-1:-1:-1;;;1745:111:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1745:111:0;;;;1811:12;;1745:111;;;1811:12;;-1:-1:-1;;1811:12:0;:::i;:::-;-1:-1:-1;1833:16:0;;;;:6;;:16;;;;;:::i;:::-;;1745:111;;164:292:1;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;164:292:1;;;-1:-1:-1;164:292:1;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:380:2;93:1;89:12;;;;136;;;157:61;;211:4;203:6;199:17;189:27;;157:61;264:2;256:6;253:14;233:18;230:38;227:161;;310:10;305:3;301:20;298:1;291:31;345:4;342:1;335:15;373:4;370:1;363:15;227:161;;14:380;;;:::o;:::-;164:292:1;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_mint_368": {
                  "entryPoint": 2200,
                  "id": 368,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@approve_112": {
                  "entryPoint": 895,
                  "id": 112,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@balanceOf_41": {
                  "entryPoint": null,
                  "id": 41,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@getApproved_49": {
                  "entryPoint": null,
                  "id": 49,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@isApprovedForAll_55": {
                  "entryPoint": null,
                  "id": 55,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@mint_539": {
                  "entryPoint": 1581,
                  "id": 539,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@name_28": {
                  "entryPoint": 753,
                  "id": 28,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@ownerOf_45": {
                  "entryPoint": null,
                  "id": 45,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@safeTransferFrom_255": {
                  "entryPoint": 1602,
                  "id": 255,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@safeTransferFrom_297": {
                  "entryPoint": 1971,
                  "id": 297,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@setApprovalForAll_136": {
                  "entryPoint": 1863,
                  "id": 136,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@supportsInterface_317": {
                  "entryPoint": 671,
                  "id": 317,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@symbol_30": {
                  "entryPoint": 1850,
                  "id": 30,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@tokenURI_550": {
                  "entryPoint": null,
                  "id": 550,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@transferFrom_215": {
                  "entryPoint": 1126,
                  "id": 215,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "abi_decode_address": {
                  "entryPoint": 2649,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 2779,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 3108,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 2719,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr": {
                  "entryPoint": 2888,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_addresst_bool": {
                  "entryPoint": 2806,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": 2677,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 2492,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes4_fromMemory": {
                  "entryPoint": 3217,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256": {
                  "entryPoint": 2624,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_string": {
                  "entryPoint": 2528,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "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": {
                  "entryPoint": 3246,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 2605,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_5e7bf34c5f9e77c6f415365fc02ea1195419ccebda18d14265f0c098f3687483__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_e3f56786f4dc15ea567a5bcea1aa6e11424106cac78b0acf41b1b7deccad9f1b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_e7e213d5e2bee0acc2c7bf8bfda19ef0cae82e7b8c997e7e898919269971e7c4__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_f70366941d4d371c05a2457cbc0f4d05a3d6bc57ab01a7c3338bfed233eebe93__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "extract_byte_array_length": {
                  "entryPoint": 3159,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x41": {
                  "entryPoint": 2866,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_bytes4": {
                  "entryPoint": 2467,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:8128:2",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:2",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "58:87:2",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "123:16:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "132:1:2",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "135:1:2",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "125:12:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "125:12:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "81:5:2"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "92:5:2"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "103:3:2",
                                                "type": "",
                                                "value": "224"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "108:10:2",
                                                "type": "",
                                                "value": "0xffffffff"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "99:3:2"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "99:20:2"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "88:3:2"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "88:32:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "78:2:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "78:43:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "71:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "71:51:2"
                              },
                              "nodeType": "YulIf",
                              "src": "68:71:2"
                            }
                          ]
                        },
                        "name": "validator_revert_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "47:5:2",
                            "type": ""
                          }
                        ],
                        "src": "14:131:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "219:176:2",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "265:16:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "274:1:2",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "277:1:2",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "267:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "267:12:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "267:12:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "240:7:2"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "249:9:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "236:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "236:23:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "261:2:2",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "232:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "232:32:2"
                              },
                              "nodeType": "YulIf",
                              "src": "229:52:2"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "290:36:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "316:9:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "303:12:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "303:23:2"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "294:5:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "359:5:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "335:23:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "335:30:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "335:30:2"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "374:15:2",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "384:5:2"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "374:6:2"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "185:9:2",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "196:7:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "208:6:2",
                            "type": ""
                          }
                        ],
                        "src": "150:245:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "495:92:2",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "505:26:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "517:9:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "528:2:2",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "513:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "513:18:2"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "505:4:2"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "547:9:2"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "572:6:2"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "565:6:2"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "565:14:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "558:6:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "558:22:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "540:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "540:41:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "540:41:2"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "464:9:2",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "475:6:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "486:4:2",
                            "type": ""
                          }
                        ],
                        "src": "400:187:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "642:422:2",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "652:26:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "672:5:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "666:5:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "666:12:2"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "656:6:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "694:3:2"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "699:6:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "687:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "687:19:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "687:19:2"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "715:10:2",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "724:1:2",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "719:1:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "786:110:2",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "800:14:2",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "810:4:2",
                                      "type": "",
                                      "value": "0x20"
                                    },
                                    "variables": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulTypedName",
                                        "src": "804:2:2",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "pos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "842:3:2"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "847:1:2"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "838:3:2"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "838:11:2"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "851:2:2"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "834:3:2"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "834:20:2"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "870:5:2"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "877:1:2"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "866:3:2"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "866:13:2"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "881:2:2"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "862:3:2"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "862:22:2"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "856:5:2"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "856:29:2"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "827:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "827:59:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "827:59:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "745:1:2"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "748:6:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "742:2:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "742:13:2"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "756:21:2",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "758:17:2",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "767:1:2"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "770:4:2",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "763:3:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "763:12:2"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "758:1:2"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "738:3:2",
                                "statements": []
                              },
                              "src": "734:162:2"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "930:62:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "pos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "959:3:2"
                                                },
                                                {
                                                  "name": "length",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "964:6:2"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "955:3:2"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "955:16:2"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "973:4:2",
                                              "type": "",
                                              "value": "0x20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "951:3:2"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "951:27:2"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "980:1:2",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "944:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "944:38:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "944:38:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "911:1:2"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "914:6:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "908:2:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "908:13:2"
                              },
                              "nodeType": "YulIf",
                              "src": "905:87:2"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1001:57:2",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1016:3:2"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1029:6:2"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1037:2:2",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1025:3:2"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1025:15:2"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1046:2:2",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "1042:3:2"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1042:7:2"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1021:3:2"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1021:29:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1012:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1012:39:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1053:4:2",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1008:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1008:50:2"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1001:3:2"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "619:5:2",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "626:3:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "634:3:2",
                            "type": ""
                          }
                        ],
                        "src": "592:472:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1190:99:2",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1207:9:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1218:2:2",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1200:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1200:21:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1200:21:2"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1230:53:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1256:6:2"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1268:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1279:2:2",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1264:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1264:18:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "1238:17:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1238:45:2"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1230:4:2"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1159:9:2",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1170:6:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1181:4:2",
                            "type": ""
                          }
                        ],
                        "src": "1069:220:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1364:110:2",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1410:16:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1419:1:2",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1422:1:2",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1412:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1412:12:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1412:12:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1385:7:2"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1394:9:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1381:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1381:23:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1406:2:2",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1377:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1377:32:2"
                              },
                              "nodeType": "YulIf",
                              "src": "1374:52:2"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1435:33:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1458:9:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1445:12:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1445:23:2"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1435:6:2"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1330:9:2",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1341:7:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1353:6:2",
                            "type": ""
                          }
                        ],
                        "src": "1294:180:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1580:102:2",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1590:26:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1602:9:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1613:2:2",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1598:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1598:18:2"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1590:4:2"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1632:9:2"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1647:6:2"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1663:3:2",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1668:1:2",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "1659:3:2"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1659:11:2"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1672:1:2",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "1655:3:2"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1655:19:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1643:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1643:32:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1625:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1625:51:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1625:51:2"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1549:9:2",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1560:6:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1571:4:2",
                            "type": ""
                          }
                        ],
                        "src": "1479:203:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1736:124:2",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1746:29:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1768:6:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1755:12:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1755:20:2"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "1746:5:2"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1838:16:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1847:1:2",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1850:1:2",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1840:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1840:12:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1840:12:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1797:5:2"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1808:5:2"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1823:3:2",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1828:1:2",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1819:3:2"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1819:11:2"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1832:1:2",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "1815:3:2"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1815:19:2"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1804:3:2"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1804:31:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1794:2:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1794:42:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1787:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1787:50:2"
                              },
                              "nodeType": "YulIf",
                              "src": "1784:70:2"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1715:6:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1726:5:2",
                            "type": ""
                          }
                        ],
                        "src": "1687:173:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1952:167:2",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1998:16:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2007:1:2",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2010:1:2",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2000:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2000:12:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2000:12:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1973:7:2"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1982:9:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1969:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1969:23:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1994:2:2",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1965:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1965:32:2"
                              },
                              "nodeType": "YulIf",
                              "src": "1962:52:2"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2023:39:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2052:9:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2033:18:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2033:29:2"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2023:6:2"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2071:42:2",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2098:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2109:2:2",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2094:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2094:18:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2081:12:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2081:32:2"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2071:6:2"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1910:9:2",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1921:7:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1933:6:2",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1941:6:2",
                            "type": ""
                          }
                        ],
                        "src": "1865:254:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2228:224:2",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2274:16:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2283:1:2",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2286:1:2",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2276:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2276:12:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2276:12:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2249:7:2"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2258:9:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2245:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2245:23:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2270:2:2",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2241:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2241:32:2"
                              },
                              "nodeType": "YulIf",
                              "src": "2238:52:2"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2299:39:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2328:9:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2309:18:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2309:29:2"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2299:6:2"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2347:48:2",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2380:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2391:2:2",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2376:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2376:18:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2357:18:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2357:38:2"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2347:6:2"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2404:42:2",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2431:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2442:2:2",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2427:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2427:18:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2414:12:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2414:32:2"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2404:6:2"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2178:9:2",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2189:7:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2201:6:2",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2209:6:2",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2217:6:2",
                            "type": ""
                          }
                        ],
                        "src": "2124:328:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2527:116:2",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2573:16:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2582:1:2",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2585:1:2",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2575:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2575:12:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2575:12:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2548:7:2"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2557:9:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2544:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2544:23:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2569:2:2",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2540:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2540:32:2"
                              },
                              "nodeType": "YulIf",
                              "src": "2537:52:2"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2598:39:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2627:9:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2608:18:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2608:29:2"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2598:6:2"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2493:9:2",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2504:7:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2516:6:2",
                            "type": ""
                          }
                        ],
                        "src": "2457:186:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2749:76:2",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2759:26:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2771:9:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2782:2:2",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2767:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2767:18:2"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2759:4:2"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2801:9:2"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2812:6:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2794:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2794:25:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2794:25:2"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2718:9:2",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2729:6:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2740:4:2",
                            "type": ""
                          }
                        ],
                        "src": "2648:177:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2914:263:2",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2960:16:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2969:1:2",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2972:1:2",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2962:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2962:12:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2962:12:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2935:7:2"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2944:9:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2931:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2931:23:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2956:2:2",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2927:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2927:32:2"
                              },
                              "nodeType": "YulIf",
                              "src": "2924:52:2"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2985:39:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3014:9:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2995:18:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2995:29:2"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2985:6:2"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3033:45:2",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3063:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3074:2:2",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3059:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3059:18:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3046:12:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3046:32:2"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3037:5:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3131:16:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3140:1:2",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3143:1:2",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3133:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3133:12:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3133:12:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3100:5:2"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "3121:5:2"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "3114:6:2"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3114:13:2"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "3107:6:2"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3107:21:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "3097:2:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3097:32:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3090:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3090:40:2"
                              },
                              "nodeType": "YulIf",
                              "src": "3087:60:2"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3156:15:2",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3166:5:2"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3156:6:2"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2872:9:2",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2883:7:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2895:6:2",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2903:6:2",
                            "type": ""
                          }
                        ],
                        "src": "2830:347:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3214:95:2",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3231:1:2",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3238:3:2",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3243:10:2",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "3234:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3234:20:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3224:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3224:31:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3224:31:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3271:1:2",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3274:4:2",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3264:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3264:15:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3264:15:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3295:1:2",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3298:4:2",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "3288:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3288:15:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3288:15:2"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "3182:127:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3444:1008:2",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3491:16:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3500:1:2",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3503:1:2",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3493:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3493:12:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3493:12:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3465:7:2"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3474:9:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3461:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3461:23:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3486:3:2",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3457:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3457:33:2"
                              },
                              "nodeType": "YulIf",
                              "src": "3454:53:2"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3516:39:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3545:9:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3526:18:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3526:29:2"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3516:6:2"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3564:48:2",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3597:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3608:2:2",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3593:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3593:18:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3574:18:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3574:38:2"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3564:6:2"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3621:42:2",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3648:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3659:2:2",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3644:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3644:18:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3631:12:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3631:32:2"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3621:6:2"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3672:46:2",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3703:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3714:2:2",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3699:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3699:18:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3686:12:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3686:32:2"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3676:6:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3727:28:2",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3737:18:2",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3731:2:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3782:16:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3791:1:2",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3794:1:2",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3784:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3784:12:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3784:12:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3770:6:2"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3778:2:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3767:2:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3767:14:2"
                              },
                              "nodeType": "YulIf",
                              "src": "3764:34:2"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3807:32:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3821:9:2"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3832:6:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3817:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3817:22:2"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "3811:2:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3887:16:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3896:1:2",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3899:1:2",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3889:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3889:12:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3889:12:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "3866:2:2"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3870:4:2",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3862:3:2"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3862:13:2"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3877:7:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3858:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3858:27:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3851:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3851:35:2"
                              },
                              "nodeType": "YulIf",
                              "src": "3848:55:2"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3912:26:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3935:2:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3922:12:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3922:16:2"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "3916:2:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3961:22:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "3963:16:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3963:18:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3963:18:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3953:2:2"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3957:2:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3950:2:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3950:10:2"
                              },
                              "nodeType": "YulIf",
                              "src": "3947:36:2"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3992:17:2",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4006:2:2",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "4002:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4002:7:2"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "3996:2:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4018:23:2",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4038:2:2",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4032:5:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4032:9:2"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "4022:6:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4050:71:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "4072:6:2"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4096:2:2"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "4100:4:2",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4092:3:2"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4092:13:2"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "4107:2:2"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "4088:3:2"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4088:22:2"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4112:2:2",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "4084:3:2"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4084:31:2"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "4117:2:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4080:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4080:40:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4068:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4068:53:2"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "4054:10:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4180:22:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "4182:16:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4182:18:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4182:18:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4139:10:2"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4151:2:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "4136:2:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4136:18:2"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4159:10:2"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4171:6:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "4156:2:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4156:22:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "4133:2:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4133:46:2"
                              },
                              "nodeType": "YulIf",
                              "src": "4130:72:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4218:2:2",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "4222:10:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4211:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4211:22:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4211:22:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "4249:6:2"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "4257:2:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4242:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4242:18:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4242:18:2"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4306:16:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4315:1:2",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4318:1:2",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4308:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4308:12:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4308:12:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "4283:2:2"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "4287:2:2"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "4279:3:2"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4279:11:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4292:2:2",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4275:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4275:20:2"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4297:7:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4272:2:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4272:33:2"
                              },
                              "nodeType": "YulIf",
                              "src": "4269:53:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4348:6:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4356:2:2",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4344:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4344:15:2"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4365:2:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4369:2:2",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4361:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4361:11:2"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "4374:2:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "4331:12:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4331:46:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4331:46:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "4401:6:2"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "4409:2:2"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "4397:3:2"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4397:15:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4414:2:2",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4393:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4393:24:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4419:1:2",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4386:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4386:35:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4386:35:2"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4430:16:2",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "4440:6:2"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "4430:6:2"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3386:9:2",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3397:7:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3409:6:2",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3417:6:2",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3425:6:2",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3433:6:2",
                            "type": ""
                          }
                        ],
                        "src": "3314:1138:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4544:173:2",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4590:16:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4599:1:2",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4602:1:2",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4592:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4592:12:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4592:12:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4565:7:2"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4574:9:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4561:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4561:23:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4586:2:2",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4557:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4557:32:2"
                              },
                              "nodeType": "YulIf",
                              "src": "4554:52:2"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4615:39:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4644:9:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4625:18:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4625:29:2"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4615:6:2"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4663:48:2",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4696:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4707:2:2",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4692:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4692:18:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4673:18:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4673:38:2"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4663:6:2"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4502:9:2",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4513:7:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4525:6:2",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4533:6:2",
                            "type": ""
                          }
                        ],
                        "src": "4457:260:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4777:325:2",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4787:22:2",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4801:1:2",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "4804:4:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "4797:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4797:12:2"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "4787:6:2"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4818:38:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "4848:4:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4854:1:2",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "4844:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4844:12:2"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "4822:18:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4895:31:2",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4897:27:2",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "4911:6:2"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4919:4:2",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "4907:3:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4907:17:2"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "4897:6:2"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "4875:18:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "4868:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4868:26:2"
                              },
                              "nodeType": "YulIf",
                              "src": "4865:61:2"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4985:111:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5006:1:2",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5013:3:2",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5018:10:2",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "5009:3:2"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5009:20:2"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4999:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4999:31:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4999:31:2"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5050:1:2",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5053:4:2",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5043:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5043:15:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5043:15:2"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5078:1:2",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5081:4:2",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5071:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5071:15:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5071:15:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "4941:18:2"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "4964:6:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4972:2:2",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "4961:2:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4961:14:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "4938:2:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4938:38:2"
                              },
                              "nodeType": "YulIf",
                              "src": "4935:161:2"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "4757:4:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "4766:6:2",
                            "type": ""
                          }
                        ],
                        "src": "4722:380:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5281:164:2",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5298:9:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5309:2:2",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5291:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5291:21:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5291:21:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5332:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5343:2:2",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5328:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5328:18:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5348:2:2",
                                    "type": "",
                                    "value": "14"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5321:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5321:30:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5321:30:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5371:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5382:2:2",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5367:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5367:18:2"
                                  },
                                  {
                                    "hexValue": "4e4f545f415554484f52495a4544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5387:16:2",
                                    "type": "",
                                    "value": "NOT_AUTHORIZED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5360:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5360:44:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5360:44:2"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5413:26:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5425:9:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5436:2:2",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5421:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5421:18:2"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5413:4:2"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e7e213d5e2bee0acc2c7bf8bfda19ef0cae82e7b8c997e7e898919269971e7c4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5258:9:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5272:4:2",
                            "type": ""
                          }
                        ],
                        "src": "5107:338:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5624:160:2",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5641:9:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5652:2:2",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5634:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5634:21:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5634:21:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5675:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5686:2:2",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5671:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5671:18:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5691:2:2",
                                    "type": "",
                                    "value": "10"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5664:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5664:30:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5664:30:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5714:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5725:2:2",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5710:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5710:18:2"
                                  },
                                  {
                                    "hexValue": "57524f4e475f46524f4d",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5730:12:2",
                                    "type": "",
                                    "value": "WRONG_FROM"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5703:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5703:40:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5703:40:2"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5752:26:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5764:9:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5775:2:2",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5760:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5760:18:2"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5752:4:2"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f70366941d4d371c05a2457cbc0f4d05a3d6bc57ab01a7c3338bfed233eebe93__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5601:9:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5615:4:2",
                            "type": ""
                          }
                        ],
                        "src": "5450:334:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5963:167:2",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5980:9:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5991:2:2",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5973:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5973:21:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5973:21:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6014:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6025:2:2",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6010:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6010:18:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6030:2:2",
                                    "type": "",
                                    "value": "17"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6003:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6003:30:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6003:30:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6053:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6064:2:2",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6049:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6049:18:2"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f524543495049454e54",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6069:19:2",
                                    "type": "",
                                    "value": "INVALID_RECIPIENT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6042:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6042:47:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6042:47:2"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6098:26:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6110:9:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6121:2:2",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6106:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6106:18:2"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6098:4:2"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_5e7bf34c5f9e77c6f415365fc02ea1195419ccebda18d14265f0c098f3687483__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5940:9:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5954:4:2",
                            "type": ""
                          }
                        ],
                        "src": "5789:341:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6392:298:2",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6402:29:2",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6420:3:2",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6425:1:2",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "6416:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6416:11:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6429:1:2",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "6412:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6412:19:2"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6406:2:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6447:9:2"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6462:6:2"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6470:2:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6458:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6458:15:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6440:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6440:34:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6440:34:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6494:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6505:2:2",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6490:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6490:18:2"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6514:6:2"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6522:2:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6510:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6510:15:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6483:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6483:43:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6483:43:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6546:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6557:2:2",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6542:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6542:18:2"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6562:6:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6535:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6535:34:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6535:34:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6589:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6600:2:2",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6585:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6585:18:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6605:3:2",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6578:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6578:31:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6578:31:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6629:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6640:3:2",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6625:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6625:19:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6646:1:2",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6618:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6618:30:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6618:30:2"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6657:27:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6669:9:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6680:3:2",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6665:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6665:19:2"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6657:4:2"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6345:9:2",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "6356:6:2",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6364:6:2",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6372:6:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6383:4:2",
                            "type": ""
                          }
                        ],
                        "src": "6135:555:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6775:169:2",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6821:16:2",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6830:1:2",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6833:1:2",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6823:6:2"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6823:12:2"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6823:12:2"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6796:7:2"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6805:9:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6792:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6792:23:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6817:2:2",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6788:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6788:32:2"
                              },
                              "nodeType": "YulIf",
                              "src": "6785:52:2"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6846:29:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6865:9:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6859:5:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6859:16:2"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "6850:5:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6908:5:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "6884:23:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6884:30:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6884:30:2"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6923:15:2",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "6933:5:2"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6923:6:2"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6741:9:2",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6752:7:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6764:6:2",
                            "type": ""
                          }
                        ],
                        "src": "6695:249:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7123:166:2",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7140:9:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7151:2:2",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7133:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7133:21:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7133:21:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7174:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7185:2:2",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7170:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7170:18:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7190:2:2",
                                    "type": "",
                                    "value": "16"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7163:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7163:30:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7163:30:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7213:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7224:2:2",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7209:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7209:18:2"
                                  },
                                  {
                                    "hexValue": "554e534146455f524543495049454e54",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7229:18:2",
                                    "type": "",
                                    "value": "UNSAFE_RECIPIENT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7202:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7202:46:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7202:46:2"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7257:26:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7269:9:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7280:2:2",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7265:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7265:18:2"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7257:4:2"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7100:9:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7114:4:2",
                            "type": ""
                          }
                        ],
                        "src": "6949:340:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7497:286:2",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7507:29:2",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7525:3:2",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7530:1:2",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "7521:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7521:11:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7534:1:2",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "7517:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7517:19:2"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7511:2:2",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7552:9:2"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "7567:6:2"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7575:2:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7563:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7563:15:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7545:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7545:34:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7545:34:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7599:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7610:2:2",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7595:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7595:18:2"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7619:6:2"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7627:2:2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7615:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7615:15:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7588:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7588:43:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7588:43:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7651:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7662:2:2",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7647:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7647:18:2"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7667:6:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7640:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7640:34:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7640:34:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7694:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7705:2:2",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7690:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7690:18:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7710:3:2",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7683:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7683:31:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7683:31:2"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7723:54:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7749:6:2"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7761:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7772:3:2",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7757:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7757:19:2"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "7731:17:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7731:46:2"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7723:4:2"
                                }
                              ]
                            }
                          ]
                        },
                        "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": "7442:9:2",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "7453:6:2",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7461:6:2",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7469:6:2",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7477:6:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7488:4:2",
                            "type": ""
                          }
                        ],
                        "src": "7294:489:2"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7962:164:2",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7979:9:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7990:2:2",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7972:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7972:21:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7972:21:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8013:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8024:2:2",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8009:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8009:18:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8029:2:2",
                                    "type": "",
                                    "value": "14"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8002:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8002:30:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8002:30:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8052:9:2"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8063:2:2",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8048:3:2"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8048:18:2"
                                  },
                                  {
                                    "hexValue": "414c52454144595f4d494e544544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8068:16:2",
                                    "type": "",
                                    "value": "ALREADY_MINTED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8041:6:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8041:44:2"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8041:44:2"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8094:26:2",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8106:9:2"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8117:2:2",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8102:3:2"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8102:18:2"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8094:4:2"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e3f56786f4dc15ea567a5bcea1aa6e11424106cac78b0acf41b1b7deccad9f1b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7939:9:2",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7953:4:2",
                            "type": ""
                          }
                        ],
                        "src": "7788:338:2"
                      }
                    ]
                  },
                  "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 abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            let _1 := 0x20\n            mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(pos, length), 0x20), 0)\n        }\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_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        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value3 := memPtr\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_e7e213d5e2bee0acc2c7bf8bfda19ef0cae82e7b8c997e7e898919269971e7c4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"NOT_AUTHORIZED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_f70366941d4d371c05a2457cbc0f4d05a3d6bc57ab01a7c3338bfed233eebe93__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 10)\n        mstore(add(headStart, 64), \"WRONG_FROM\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_5e7bf34c5f9e77c6f415365fc02ea1195419ccebda18d14265f0c098f3687483__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"INVALID_RECIPIENT\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, 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        mstore(add(headStart, 128), 0)\n        tail := add(headStart, 160)\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_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"UNSAFE_RECIPIENT\")\n        tail := add(headStart, 96)\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_encode_tuple_t_stringliteral_e3f56786f4dc15ea567a5bcea1aa6e11424106cac78b0acf41b1b7deccad9f1b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"ALREADY_MINTED\")\n        tail := add(headStart, 96)\n    }\n}",
                  "id": 2,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb4651461021a578063b88d4fde1461022d578063c87b56dd14610240578063e985e9c51461027157600080fd5b80636352211e146101bb57806370a08231146101e457806395d89b411461021257600080fd5b8063095ea7b3116100c8578063095ea7b31461016d57806323b872dd1461018257806340c10f191461019557806342842e0e146101a857600080fd5b806301ffc9a7146100ef57806306fdde0314610117578063081812fc1461012c575b600080fd5b6101026100fd3660046109bc565b61029f565b60405190151581526020015b60405180910390f35b61011f6102f1565b60405161010e9190610a2d565b61015561013a366004610a40565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161010e565b61018061017b366004610a75565b61037f565b005b610180610190366004610a9f565b610466565b6101026101a3366004610a75565b61062d565b6101806101b6366004610a9f565b610642565b6101556101c9366004610a40565b6003602052600090815260409020546001600160a01b031681565b6102046101f2366004610adb565b60026020526000908152604090205481565b60405190815260200161010e565b61011f61073a565b610180610228366004610af6565b610747565b61018061023b366004610b48565b6107b3565b61011f61024e366004610a40565b50604080518082019091526008815267746f6b656e55524960c01b602082015290565b61010261027f366004610c24565b600560209081526000928352604080842090915290825290205460ff1681565b60006301ffc9a760e01b6001600160e01b0319831614806102d057506380ac58cd60e01b6001600160e01b03198316145b806102eb5750635b5e139f60e01b6001600160e01b03198316145b92915050565b600080546102fe90610c57565b80601f016020809104026020016040519081016040528092919081815260200182805461032a90610c57565b80156103775780601f1061034c57610100808354040283529160200191610377565b820191906000526020600020905b81548152906001019060200180831161035a57829003601f168201915b505050505081565b6000818152600360205260409020546001600160a01b0316338114806103c857506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b61040a5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000818152600360205260409020546001600160a01b038481169116146104bc5760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b6044820152606401610401565b6001600160a01b0382166105065760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610401565b336001600160a01b038416148061053357506000818152600460205260409020546001600160a01b031633145b8061056157506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b61059e5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610401565b6001600160a01b0380841660008181526002602090815260408083208054600019019055938616808352848320805460010190558583526003825284832080546001600160a01b03199081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60006106398383610898565b50600192915050565b61064d838383610466565b6001600160a01b0382163b15806106f65750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af11580156106c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ea9190610c91565b6001600160e01b031916145b6107355760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610401565b505050565b600180546102fe90610c57565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6107be848484610466565b6001600160a01b0383163b15806108535750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a0290610804903390899088908890600401610cae565b6020604051808303816000875af1158015610823573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108479190610c91565b6001600160e01b031916145b6108925760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610401565b50505050565b6001600160a01b0382166108e25760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610401565b6000818152600360205260409020546001600160a01b0316156109385760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b6044820152606401610401565b6001600160a01b038216600081815260026020908152604080832080546001019055848352600390915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b0319811681146109b957600080fd5b50565b6000602082840312156109ce57600080fd5b81356109d9816109a3565b9392505050565b6000815180845260005b81811015610a06576020818501810151868301820152016109ea565b81811115610a18576000602083870101525b50601f01601f19169290920160200192915050565b6020815260006109d960208301846109e0565b600060208284031215610a5257600080fd5b5035919050565b80356001600160a01b0381168114610a7057600080fd5b919050565b60008060408385031215610a8857600080fd5b610a9183610a59565b946020939093013593505050565b600080600060608486031215610ab457600080fd5b610abd84610a59565b9250610acb60208501610a59565b9150604084013590509250925092565b600060208284031215610aed57600080fd5b6109d982610a59565b60008060408385031215610b0957600080fd5b610b1283610a59565b915060208301358015158114610b2757600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610b5e57600080fd5b610b6785610a59565b9350610b7560208601610a59565b925060408501359150606085013567ffffffffffffffff80821115610b9957600080fd5b818701915087601f830112610bad57600080fd5b813581811115610bbf57610bbf610b32565b604051601f8201601f19908116603f01168101908382118183101715610be757610be7610b32565b816040528281528a6020848701011115610c0057600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610c3757600080fd5b610c4083610a59565b9150610c4e60208401610a59565b90509250929050565b600181811c90821680610c6b57607f821691505b602082108103610c8b57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610ca357600080fd5b81516109d9816109a3565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090610ce1908301846109e0565b969550505050505056fea2646970667358221220e08b7719d5fe77997a730c7abdff8f0fb2998e7da9e1137593ce63458f9d933c64736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x21A JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x22D JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x1BB JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1E4 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x212 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x117 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x12C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0x9BC JUMP JUMPDEST PUSH2 0x29F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11F PUSH2 0x2F1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10E SWAP2 SWAP1 PUSH2 0xA2D JUMP JUMPDEST PUSH2 0x155 PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0xA40 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST PUSH2 0x180 PUSH2 0x17B CALLDATASIZE PUSH1 0x4 PUSH2 0xA75 JUMP JUMPDEST PUSH2 0x37F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x180 PUSH2 0x190 CALLDATASIZE PUSH1 0x4 PUSH2 0xA9F JUMP JUMPDEST PUSH2 0x466 JUMP JUMPDEST PUSH2 0x102 PUSH2 0x1A3 CALLDATASIZE PUSH1 0x4 PUSH2 0xA75 JUMP JUMPDEST PUSH2 0x62D JUMP JUMPDEST PUSH2 0x180 PUSH2 0x1B6 CALLDATASIZE PUSH1 0x4 PUSH2 0xA9F JUMP JUMPDEST PUSH2 0x642 JUMP JUMPDEST PUSH2 0x155 PUSH2 0x1C9 CALLDATASIZE PUSH1 0x4 PUSH2 0xA40 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x204 PUSH2 0x1F2 CALLDATASIZE PUSH1 0x4 PUSH2 0xADB JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST PUSH2 0x11F PUSH2 0x73A JUMP JUMPDEST PUSH2 0x180 PUSH2 0x228 CALLDATASIZE PUSH1 0x4 PUSH2 0xAF6 JUMP JUMPDEST PUSH2 0x747 JUMP JUMPDEST PUSH2 0x180 PUSH2 0x23B CALLDATASIZE PUSH1 0x4 PUSH2 0xB48 JUMP JUMPDEST PUSH2 0x7B3 JUMP JUMPDEST PUSH2 0x11F PUSH2 0x24E CALLDATASIZE PUSH1 0x4 PUSH2 0xA40 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x8 DUP2 MSTORE PUSH8 0x746F6B656E555249 PUSH1 0xC0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x102 PUSH2 0x27F CALLDATASIZE PUSH1 0x4 PUSH2 0xC24 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ DUP1 PUSH2 0x2D0 JUMPI POP PUSH4 0x80AC58CD PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST DUP1 PUSH2 0x2EB JUMPI POP PUSH4 0x5B5E139F PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0x2FE SWAP1 PUSH2 0xC57 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x32A SWAP1 PUSH2 0xC57 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x377 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x34C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x377 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x35A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP2 EQ DUP1 PUSH2 0x3C8 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x40A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x1393D517D055551213D492569151 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP6 SWAP4 SWAP2 DUP6 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ PUSH2 0x4BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH10 0x57524F4E475F46524F4D PUSH1 0xB0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x401 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x506 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x1253959053125117D49150D25412515395 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x401 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ DUP1 PUSH2 0x533 JUMPI POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ JUMPDEST DUP1 PUSH2 0x561 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x59E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x1393D517D055551213D492569151 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x401 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE SWAP4 DUP7 AND DUP1 DUP4 MSTORE DUP5 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP6 DUP4 MSTORE PUSH1 0x3 DUP3 MSTORE DUP5 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND DUP4 OR SWAP1 SWAP2 SSTORE PUSH1 0x4 SWAP1 SWAP3 MSTORE DUP5 DUP4 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 AND SWAP1 SWAP2 SSTORE SWAP3 MLOAD DUP5 SWAP4 SWAP3 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x639 DUP4 DUP4 PUSH2 0x898 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x64D DUP4 DUP4 DUP4 PUSH2 0x466 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EXTCODESIZE ISZERO DUP1 PUSH2 0x6F6 JUMPI POP PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP1 DUP3 MSTORE CALLER PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD DUP5 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x64 DUP5 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP5 ADD MSTORE SWAP1 SWAP2 SWAP1 DUP5 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH1 0xA4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6C6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6EA SWAP2 SWAP1 PUSH2 0xC91 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ JUMPDEST PUSH2 0x735 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x155394D0519157D49150D25412515395 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x401 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH2 0x2FE SWAP1 PUSH2 0xC57 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 DUP2 MSTORE SWAP2 SWAP3 SWAP2 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x7BE DUP5 DUP5 DUP5 PUSH2 0x466 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE ISZERO DUP1 PUSH2 0x853 JUMPI POP PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP1 DUP3 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x804 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0xCAE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x823 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x847 SWAP2 SWAP1 PUSH2 0xC91 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ JUMPDEST PUSH2 0x892 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x155394D0519157D49150D25412515395 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x401 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x8E2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x1253959053125117D49150D25412515395 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x401 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x938 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x1053149150511657D35253951151 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x401 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0x3 SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP5 OR SWAP1 SSTORE MLOAD DUP4 SWAP3 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x9B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x9D9 DUP2 PUSH2 0x9A3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA06 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x9EA JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xA18 JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x9D9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x9E0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xA70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA91 DUP4 PUSH2 0xA59 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xAB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xABD DUP5 PUSH2 0xA59 JUMP JUMPDEST SWAP3 POP PUSH2 0xACB PUSH1 0x20 DUP6 ADD PUSH2 0xA59 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9D9 DUP3 PUSH2 0xA59 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB12 DUP4 PUSH2 0xA59 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xB27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xB5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB67 DUP6 PUSH2 0xA59 JUMP JUMPDEST SWAP4 POP PUSH2 0xB75 PUSH1 0x20 DUP7 ADD PUSH2 0xA59 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xB99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xBAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xBBF JUMPI PUSH2 0xBBF PUSH2 0xB32 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xBE7 JUMPI PUSH2 0xBE7 PUSH2 0xB32 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xC00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xC37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC40 DUP4 PUSH2 0xA59 JUMP JUMPDEST SWAP2 POP PUSH2 0xC4E PUSH1 0x20 DUP5 ADD PUSH2 0xA59 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xC6B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xC8B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x9D9 DUP2 PUSH2 0x9A3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0xCE1 SWAP1 DUP4 ADD DUP5 PUSH2 0x9E0 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE0 DUP12 PUSH24 0x19D5FE77997A730C7ABDFF8F0FB2998E7DA9E1137593CE63 GASLIMIT DUP16 SWAP14 SWAP4 EXTCODECOPY PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
              "sourceMap": "164:292:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4300:335:0;;;;;;:::i;:::-;;:::i;:::-;;;565:14:2;;558:22;540:41;;528:2;513:18;4300:335:0;;;;;;;;996:18;;;:::i;:::-;;;;;;;:::i;1435:46::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1435:46:0;;;;;;-1:-1:-1;;;;;1643:32:2;;;1625:51;;1613:2;1598:18;1435:46:0;1479:203:2;2045:281:0;;;;;;:::i;:::-;;:::i;:::-;;2541:737;;;;;;:::i;:::-;;:::i;221:121:1:-;;;;;;:::i;:::-;;:::i;3284:396:0:-;;;;;;:::i;:::-;;:::i;1386:42::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1386:42:0;;;1335:44;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2794:25:2;;;2782:2;2767:18;1335:44:0;2648:177:2;1021:20:0;;;:::i;2332:203::-;;;;;;:::i;:::-;;:::i;3686:425::-;;;;;;:::i;:::-;;:::i;348:106:1:-;;;;;;:::i;:::-;-1:-1:-1;430:17:1;;;;;;;;;;;;-1:-1:-1;;;430:17:1;;;;;348:106;1488:68:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;4300:335;4376:4;-1:-1:-1;;;;;;;;;4411:25:0;;;;:100;;-1:-1:-1;;;;;;;;;;4486:25:0;;;4411:100;:175;;;-1:-1:-1;;;;;;;;;;4561:25:0;;;4411:175;4392:194;4300:335;-1:-1:-1;;4300:335:0:o;996:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2045:281::-;2116:13;2132:11;;;:7;:11;;;;;;-1:-1:-1;;;;;2132:11:0;2162:10;:19;;;:58;;-1:-1:-1;;;;;;2185:23:0;;;;;;:16;:23;;;;;;;;2209:10;2185:35;;;;;;;;;;2162:58;2154:85;;;;-1:-1:-1;;;2154:85:0;;5309:2:2;2154:85:0;;;5291:21:2;5348:2;5328:18;;;5321:30;-1:-1:-1;;;5367:18:2;;;5360:44;5421:18;;2154:85:0;;;;;;;;;2250:15;;;;:11;:15;;;;;;:25;;-1:-1:-1;;;;;;2250:25:0;-1:-1:-1;;;;;2250:25:0;;;;;;;;;2291:28;;2250:15;;2291:28;;;;;;;2106:220;2045:281;;:::o;2541:737::-;2672:11;;;;:7;:11;;;;;;-1:-1:-1;;;;;2664:19:0;;;2672:11;;2664:19;2656:42;;;;-1:-1:-1;;;2656:42:0;;5652:2:2;2656:42:0;;;5634:21:2;5691:2;5671:18;;;5664:30;-1:-1:-1;;;5710:18:2;;;5703:40;5760:18;;2656:42:0;5450:334:2;2656:42:0;-1:-1:-1;;;;;2717:16:0;;2709:46;;;;-1:-1:-1;;;2709:46:0;;5991:2:2;2709:46:0;;;5973:21:2;6030:2;6010:18;;;6003:30;-1:-1:-1;;;6049:18:2;;;6042:47;6106:18;;2709:46:0;5789:341:2;2709:46:0;2787:10;-1:-1:-1;;;;;2787:18:0;;;;:51;;-1:-1:-1;2823:15:0;;;;:11;:15;;;;;;-1:-1:-1;;;;;2823:15:0;2809:10;:29;2787:51;:89;;;-1:-1:-1;;;;;;2842:22:0;;;;;;:16;:22;;;;;;;;2865:10;2842:34;;;;;;;;;;2787:89;2766:150;;;;-1:-1:-1;;;2766:150:0;;5309:2:2;2766:150:0;;;5291:21:2;5348:2;5328:18;;;5321:30;-1:-1:-1;;;5367:18:2;;;5360:44;5421:18;;2766:150:0;5107:338:2;2766:150:0;-1:-1:-1;;;;;3116:15:0;;;;;;;:9;:15;;;;;;;;:17;;-1:-1:-1;;3116:17:0;;;3148:13;;;;;;;;;:15;;3116:17;3148:15;;;3184:11;;;:7;:11;;;;;:16;;-1:-1:-1;;;;;;3184:16:0;;;;;;;;3218:11;:15;;;;;;3211:22;;;;;;;;3249;;3192:2;;3148:13;3116:15;3249:22;;;2541:737;;;:::o;221:121:1:-;280:4;296:18;302:2;306:7;296:5;:18::i;:::-;-1:-1:-1;331:4:1;221:121;;;;:::o;3284:396:0:-;3403:26;3416:4;3422:2;3426;3403:12;:26::i;:::-;-1:-1:-1;;;;;3461:14:0;;;:19;;:170;;-1:-1:-1;3500:66:0;;-1:-1:-1;;;3500:66:0;;;3541:10;3500:66;;;6440:34:2;-1:-1:-1;;;;;6510:15:2;;;6490:18;;;6483:43;6542:18;;;6535:34;;;6605:3;6585:18;;;6578:31;-1:-1:-1;6625:19:2;;;6618:30;3586:45:0;;3500:40;;;;3586:45;;6665:19:2;;3500:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;3500:131:0;;3461:170;3440:233;;;;-1:-1:-1;;;3440:233:0;;7151:2:2;3440:233:0;;;7133:21:2;7190:2;7170:18;;;7163:30;-1:-1:-1;;;7209:18:2;;;7202:46;7265:18;;3440:233:0;6949:340:2;3440:233:0;3284:396;;;:::o;1021:20::-;;;;;;;:::i;2332:203::-;2434:10;2417:28;;;;:16;:28;;;;;;;;-1:-1:-1;;;;;2417:38:0;;;;;;;;;;;;:49;;-1:-1:-1;;2417:49:0;;;;;;;;;;2482:46;;540:41:2;;;2417:38:0;;2434:10;2482:46;;513:18:2;2482:46:0;;;;;;;2332:203;;:::o;3686:425::-;3832:26;3845:4;3851:2;3855;3832:12;:26::i;:::-;-1:-1:-1;;;;;3890:14:0;;;:19;;:172;;-1:-1:-1;3929:68:0;;-1:-1:-1;;;3929:68:0;;;4017:45;-1:-1:-1;;;;;3929:40:0;;;4017:45;;3929:68;;3970:10;;3982:4;;3988:2;;3992:4;;3929:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;3929:133:0;;3890:172;3869:235;;;;-1:-1:-1;;;3869:235:0;;7151:2:2;3869:235:0;;;7133:21:2;7190:2;7170:18;;;7163:30;-1:-1:-1;;;7209:18:2;;;7202:46;7265:18;;3869:235:0;6949:340:2;3869:235:0;3686:425;;;;:::o;4829:368::-;-1:-1:-1;;;;;4903:16:0;;4895:46;;;;-1:-1:-1;;;4895:46:0;;5991:2:2;4895:46:0;;;5973:21:2;6030:2;6010:18;;;6003:30;-1:-1:-1;;;6049:18:2;;;6042:47;6106:18;;4895:46:0;5789:341:2;4895:46:0;4983:1;4960:11;;;:7;:11;;;;;;-1:-1:-1;;;;;4960:11:0;:25;4952:52;;;;-1:-1:-1;;;4952:52:0;;7990:2:2;4952:52:0;;;7972:21:2;8029:2;8009:18;;;8002:30;-1:-1:-1;;;8048:18:2;;;8041:44;8102:18;;4952:52:0;7788:338:2;4952:52:0;-1:-1:-1;;;;;5094:13:0;;;;;;:9;:13;;;;;;;;:15;;;;;;5130:11;;;:7;:11;;;;;;:16;;-1:-1:-1;;;;;;5130:16:0;;;;;5162:28;5138:2;;5094:13;;5162:28;;5094:13;;5162:28;4829:368;;:::o;14:131:2:-;-1:-1:-1;;;;;;88:32:2;;78:43;;68:71;;135:1;132;125:12;68:71;14:131;:::o;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;:::-;384:5;150:245;-1:-1:-1;;;150:245:2:o;592:472::-;634:3;672:5;666:12;699:6;694:3;687:19;724:1;734:162;748:6;745:1;742:13;734:162;;;810:4;866:13;;;862:22;;856:29;838:11;;;834:20;;827:59;763:12;734:162;;;914:6;911:1;908:13;905:87;;;980:1;973:4;964:6;959:3;955:16;951:27;944:38;905:87;-1:-1:-1;1046:2:2;1025:15;-1:-1:-1;;1021:29:2;1012:39;;;;1053:4;1008:50;;592:472;-1:-1:-1;;592:472:2:o;1069:220::-;1218:2;1207:9;1200:21;1181:4;1238:45;1279:2;1268:9;1264:18;1256:6;1238:45;:::i;1294:180::-;1353:6;1406:2;1394:9;1385:7;1381:23;1377:32;1374:52;;;1422:1;1419;1412:12;1374:52;-1:-1:-1;1445:23:2;;1294:180;-1:-1:-1;1294:180:2:o;1687:173::-;1755:20;;-1:-1:-1;;;;;1804:31:2;;1794:42;;1784:70;;1850:1;1847;1840:12;1784:70;1687:173;;;:::o;1865:254::-;1933:6;1941;1994:2;1982:9;1973:7;1969:23;1965:32;1962:52;;;2010:1;2007;2000:12;1962:52;2033:29;2052:9;2033:29;:::i;:::-;2023:39;2109:2;2094:18;;;;2081:32;;-1:-1:-1;;;1865:254:2:o;2124:328::-;2201:6;2209;2217;2270:2;2258:9;2249:7;2245:23;2241:32;2238:52;;;2286:1;2283;2276:12;2238:52;2309:29;2328:9;2309:29;:::i;:::-;2299:39;;2357:38;2391:2;2380:9;2376:18;2357:38;:::i;:::-;2347:48;;2442:2;2431:9;2427:18;2414:32;2404:42;;2124:328;;;;;:::o;2457:186::-;2516:6;2569:2;2557:9;2548:7;2544:23;2540:32;2537:52;;;2585:1;2582;2575:12;2537:52;2608:29;2627:9;2608:29;:::i;2830:347::-;2895:6;2903;2956:2;2944:9;2935:7;2931:23;2927:32;2924:52;;;2972:1;2969;2962:12;2924:52;2995:29;3014:9;2995:29;:::i;:::-;2985:39;;3074:2;3063:9;3059:18;3046:32;3121:5;3114:13;3107:21;3100:5;3097:32;3087:60;;3143:1;3140;3133:12;3087:60;3166:5;3156:15;;;2830:347;;;;;:::o;3182:127::-;3243:10;3238:3;3234:20;3231:1;3224:31;3274:4;3271:1;3264:15;3298:4;3295:1;3288:15;3314:1138;3409:6;3417;3425;3433;3486:3;3474:9;3465:7;3461:23;3457:33;3454:53;;;3503:1;3500;3493:12;3454:53;3526:29;3545:9;3526:29;:::i;:::-;3516:39;;3574:38;3608:2;3597:9;3593:18;3574:38;:::i;:::-;3564:48;;3659:2;3648:9;3644:18;3631:32;3621:42;;3714:2;3703:9;3699:18;3686:32;3737:18;3778:2;3770:6;3767:14;3764:34;;;3794:1;3791;3784:12;3764:34;3832:6;3821:9;3817:22;3807:32;;3877:7;3870:4;3866:2;3862:13;3858:27;3848:55;;3899:1;3896;3889:12;3848:55;3935:2;3922:16;3957:2;3953;3950:10;3947:36;;;3963:18;;:::i;:::-;4038:2;4032:9;4006:2;4092:13;;-1:-1:-1;;4088:22:2;;;4112:2;4084:31;4080:40;4068:53;;;4136:18;;;4156:22;;;4133:46;4130:72;;;4182:18;;:::i;:::-;4222:10;4218:2;4211:22;4257:2;4249:6;4242:18;4297:7;4292:2;4287;4283;4279:11;4275:20;4272:33;4269:53;;;4318:1;4315;4308:12;4269:53;4374:2;4369;4365;4361:11;4356:2;4348:6;4344:15;4331:46;4419:1;4414:2;4409;4401:6;4397:15;4393:24;4386:35;4440:6;4430:16;;;;;;;3314:1138;;;;;;;:::o;4457:260::-;4525:6;4533;4586:2;4574:9;4565:7;4561:23;4557:32;4554:52;;;4602:1;4599;4592:12;4554:52;4625:29;4644:9;4625:29;:::i;:::-;4615:39;;4673:38;4707:2;4696:9;4692:18;4673:38;:::i;:::-;4663:48;;4457:260;;;;;:::o;4722:380::-;4801:1;4797:12;;;;4844;;;4865:61;;4919:4;4911:6;4907:17;4897:27;;4865:61;4972:2;4964:6;4961:14;4941:18;4938:38;4935:161;;5018:10;5013:3;5009:20;5006:1;4999:31;5053:4;5050:1;5043:15;5081:4;5078:1;5071:15;4935:161;;4722:380;;;:::o;6695:249::-;6764:6;6817:2;6805:9;6796:7;6792:23;6788:32;6785:52;;;6833:1;6830;6823:12;6785:52;6865:9;6859:16;6884:30;6908:5;6884:30;:::i;7294:489::-;-1:-1:-1;;;;;7563:15:2;;;7545:34;;7615:15;;7610:2;7595:18;;7588:43;7662:2;7647:18;;7640:34;;;7710:3;7705:2;7690:18;;7683:31;;;7488:4;;7731:46;;7757:19;;7749:6;7731:46;:::i;:::-;7723:54;7294:489;-1:-1:-1;;;;;;7294:489:2:o"
            },
            "methodIdentifiers": {
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "getApproved(uint256)": "081812fc",
              "isApprovedForAll(address,address)": "e985e9c5",
              "mint(address,uint256)": "40c10f19",
              "name()": "06fdde03",
              "ownerOf(uint256)": "6352211e",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "tokenURI(uint256)": "c87b56dd",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"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\":\"id\",\"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\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/test/TestERC721.sol.sol\":\"TestERC721\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@rari-capital/solmate/src/tokens/ERC721.sol\":{\"keccak256\":\"0xf97378ab999188b3d5d97037fabbecbc726892c74cba6536899b852eb4756d6a\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://a1861567f931416ad6b4b461fb55c7819461e9bc130a416892906f65d9d2b92c\",\"dweb:/ipfs/QmYRkJ6ahJz8BhdbntkgSuLxvKtwdLRyCCny9R3dVvNQm5\"]},\"src/contracts/test/TestERC721.sol.sol\":{\"keccak256\":\"0x19f61568a46260009b21aa10c99ae70104b417e1200b65bdafddd46218887e31\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://6b3a8b29e45b02d9a91f4f4a6e6e01cbaa2bcb768f5a8b48d0c23cf7a41820a5\",\"dweb:/ipfs/QmcZn5wY4AAWzqkzrqgpRUDDNB76DiyWMuQua547uVoTbo\"]}},\"version\":1}"
        }
      }
    },
    "sources": {
      "@rari-capital/solmate/src/tokens/ERC721.sol": {
        "ast": {
          "absolutePath": "@rari-capital/solmate/src/tokens/ERC721.sol",
          "exportedSymbols": {
            "ERC721": [
              500
            ],
            "ERC721TokenReceiver": [
              515
            ]
          },
          "id": 516,
          "license": "AGPL-3.0-only",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "42:24:0"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "canonicalName": "ERC721",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 2,
                "nodeType": "StructuredDocumentation",
                "src": "68:265:0",
                "text": "@notice Modern, minimalist, and gas efficient ERC-721 implementation.\n @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)\n @dev Note that balanceOf does not revert if passed the zero address, in defiance of the ERC."
              },
              "fullyImplemented": false,
              "id": 500,
              "linearizedBaseContracts": [
                500
              ],
              "name": "ERC721",
              "nameLocation": "351:6:0",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
                  "id": 10,
                  "name": "Transfer",
                  "nameLocation": "550:8:0",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 9,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "575:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 10,
                        "src": "559:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "559:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "597:2:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 10,
                        "src": "581:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "581:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "617:2:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 10,
                        "src": "601:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "601:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "558:62:0"
                  },
                  "src": "544:77:0"
                },
                {
                  "anonymous": false,
                  "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
                  "id": 18,
                  "name": "Approval",
                  "nameLocation": "633:8:0",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 17,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "658:5:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 18,
                        "src": "642:21:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "642:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "681:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 18,
                        "src": "665:23:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "665:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "706:2:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 18,
                        "src": "690:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "690:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "641:68:0"
                  },
                  "src": "627:83:0"
                },
                {
                  "anonymous": false,
                  "eventSelector": "17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31",
                  "id": 26,
                  "name": "ApprovalForAll",
                  "nameLocation": "722:14:0",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 25,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "753:5:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 26,
                        "src": "737:21:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "737:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "776:8:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 26,
                        "src": "760:24:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "760:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "791:8:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 26,
                        "src": "786:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 23,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "786:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "736:64:0"
                  },
                  "src": "716:85:0"
                },
                {
                  "constant": false,
                  "functionSelector": "06fdde03",
                  "id": 28,
                  "mutability": "mutable",
                  "name": "name",
                  "nameLocation": "1010:4:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 500,
                  "src": "996:18:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 27,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "996:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "95d89b41",
                  "id": 30,
                  "mutability": "mutable",
                  "name": "symbol",
                  "nameLocation": "1035:6:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 500,
                  "src": "1021:20:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 29,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1021:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "functionSelector": "c87b56dd",
                  "id": 37,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenURI",
                  "nameLocation": "1057:8:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 33,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "1074:2:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 37,
                        "src": "1066:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1066:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1065:12:0"
                  },
                  "returnParameters": {
                    "id": 36,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 35,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 37,
                        "src": "1107:13:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 34,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1107:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1106:15:0"
                  },
                  "scope": 500,
                  "src": "1048:74:0",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "70a08231",
                  "id": 41,
                  "mutability": "mutable",
                  "name": "balanceOf",
                  "nameLocation": "1370:9:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 500,
                  "src": "1335:44:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 40,
                    "keyType": {
                      "id": 38,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1343:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1335:27:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 39,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1354:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "6352211e",
                  "id": 45,
                  "mutability": "mutable",
                  "name": "ownerOf",
                  "nameLocation": "1421:7:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 500,
                  "src": "1386:42:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                    "typeString": "mapping(uint256 => address)"
                  },
                  "typeName": {
                    "id": 44,
                    "keyType": {
                      "id": 42,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1394:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1386:27:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                      "typeString": "mapping(uint256 => address)"
                    },
                    "valueType": {
                      "id": 43,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1405:7:0",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "081812fc",
                  "id": 49,
                  "mutability": "mutable",
                  "name": "getApproved",
                  "nameLocation": "1470:11:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 500,
                  "src": "1435:46:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                    "typeString": "mapping(uint256 => address)"
                  },
                  "typeName": {
                    "id": 48,
                    "keyType": {
                      "id": 46,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1443:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1435:27:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                      "typeString": "mapping(uint256 => address)"
                    },
                    "valueType": {
                      "id": 47,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1454:7:0",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "e985e9c5",
                  "id": 55,
                  "mutability": "mutable",
                  "name": "isApprovedForAll",
                  "nameLocation": "1540:16:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 500,
                  "src": "1488:68:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                    "typeString": "mapping(address => mapping(address => bool))"
                  },
                  "typeName": {
                    "id": 54,
                    "keyType": {
                      "id": 50,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1496:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1488:44:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                      "typeString": "mapping(address => mapping(address => bool))"
                    },
                    "valueType": {
                      "id": 53,
                      "keyType": {
                        "id": 51,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1515:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1507:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      },
                      "valueType": {
                        "id": 52,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1526:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 70,
                    "nodeType": "Block",
                    "src": "1801:55:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 64,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 62,
                            "name": "name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28,
                            "src": "1811:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 63,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 57,
                            "src": "1818:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1811:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 65,
                        "nodeType": "ExpressionStatement",
                        "src": "1811:12:0"
                      },
                      {
                        "expression": {
                          "id": 68,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 66,
                            "name": "symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30,
                            "src": "1833:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 67,
                            "name": "_symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 59,
                            "src": "1842:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1833:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 69,
                        "nodeType": "ExpressionStatement",
                        "src": "1833:16:0"
                      }
                    ]
                  },
                  "id": 71,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 60,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 57,
                        "mutability": "mutable",
                        "name": "_name",
                        "nameLocation": "1771:5:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 71,
                        "src": "1757:19:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 56,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1757:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 59,
                        "mutability": "mutable",
                        "name": "_symbol",
                        "nameLocation": "1792:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 71,
                        "src": "1778:21:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 58,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1778:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1756:44:0"
                  },
                  "returnParameters": {
                    "id": 61,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1801:0:0"
                  },
                  "scope": 500,
                  "src": "1745:111:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 111,
                    "nodeType": "Block",
                    "src": "2106:220:0",
                    "statements": [
                      {
                        "assignments": [
                          79
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 79,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "2124:5:0",
                            "nodeType": "VariableDeclaration",
                            "scope": 111,
                            "src": "2116:13:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 78,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2116:7:0",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 83,
                        "initialValue": {
                          "baseExpression": {
                            "id": 80,
                            "name": "ownerOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45,
                            "src": "2132:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 82,
                          "indexExpression": {
                            "id": 81,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 75,
                            "src": "2140:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2132:11:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2116:27:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 95,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 88,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 85,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "2162:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 86,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "2162:10:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 87,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 79,
                                  "src": "2176:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "2162:19:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 89,
                                    "name": "isApprovedForAll",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 55,
                                    "src": "2185:16:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                      "typeString": "mapping(address => mapping(address => bool))"
                                    }
                                  },
                                  "id": 91,
                                  "indexExpression": {
                                    "id": 90,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 79,
                                    "src": "2202:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2185:23:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 94,
                                "indexExpression": {
                                  "expression": {
                                    "id": 92,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "2209:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 93,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "2209:10:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2185:35:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2162:58:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e4f545f415554484f52495a4544",
                              "id": 96,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2222:16:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e7e213d5e2bee0acc2c7bf8bfda19ef0cae82e7b8c997e7e898919269971e7c4",
                                "typeString": "literal_string \"NOT_AUTHORIZED\""
                              },
                              "value": "NOT_AUTHORIZED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e7e213d5e2bee0acc2c7bf8bfda19ef0cae82e7b8c997e7e898919269971e7c4",
                                "typeString": "literal_string \"NOT_AUTHORIZED\""
                              }
                            ],
                            "id": 84,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2154:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 97,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2154:85:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 98,
                        "nodeType": "ExpressionStatement",
                        "src": "2154:85:0"
                      },
                      {
                        "expression": {
                          "id": 103,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 99,
                              "name": "getApproved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 49,
                              "src": "2250:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 101,
                            "indexExpression": {
                              "id": 100,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 75,
                              "src": "2262:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2250:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 102,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 73,
                            "src": "2268:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2250:25:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 104,
                        "nodeType": "ExpressionStatement",
                        "src": "2250:25:0"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 106,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 79,
                              "src": "2300:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 107,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 73,
                              "src": "2307:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 108,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 75,
                              "src": "2316:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 105,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18,
                            "src": "2291:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 109,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2291:28:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 110,
                        "nodeType": "EmitStatement",
                        "src": "2286:33:0"
                      }
                    ]
                  },
                  "functionSelector": "095ea7b3",
                  "id": 112,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nameLocation": "2054:7:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 76,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 73,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "2070:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 112,
                        "src": "2062:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 72,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2062:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 75,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "2087:2:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 112,
                        "src": "2079:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 74,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2079:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2061:29:0"
                  },
                  "returnParameters": {
                    "id": 77,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2106:0:0"
                  },
                  "scope": 500,
                  "src": "2045:281:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 135,
                    "nodeType": "Block",
                    "src": "2407:128:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 126,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 119,
                                "name": "isApprovedForAll",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 55,
                                "src": "2417:16:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 123,
                              "indexExpression": {
                                "expression": {
                                  "id": 120,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "2434:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 121,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "2434:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2417:28:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 124,
                            "indexExpression": {
                              "id": 122,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 114,
                              "src": "2446:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2417:38:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 125,
                            "name": "approved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 116,
                            "src": "2458:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2417:49:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 127,
                        "nodeType": "ExpressionStatement",
                        "src": "2417:49:0"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 129,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2497:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 130,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "2497:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 131,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 114,
                              "src": "2509:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 132,
                              "name": "approved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 116,
                              "src": "2519:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 128,
                            "name": "ApprovalForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26,
                            "src": "2482:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,bool)"
                            }
                          },
                          "id": 133,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2482:46:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 134,
                        "nodeType": "EmitStatement",
                        "src": "2477:51:0"
                      }
                    ]
                  },
                  "functionSelector": "a22cb465",
                  "id": 136,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nameLocation": "2341:17:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 117,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 114,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "2367:8:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 136,
                        "src": "2359:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 113,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2359:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 116,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "2382:8:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 136,
                        "src": "2377:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 115,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2377:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2358:33:0"
                  },
                  "returnParameters": {
                    "id": 118,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2407:0:0"
                  },
                  "scope": 500,
                  "src": "2332:203:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 214,
                    "nodeType": "Block",
                    "src": "2646:632:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 150,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 146,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 138,
                                "src": "2664:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "baseExpression": {
                                  "id": 147,
                                  "name": "ownerOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45,
                                  "src": "2672:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                    "typeString": "mapping(uint256 => address)"
                                  }
                                },
                                "id": 149,
                                "indexExpression": {
                                  "id": 148,
                                  "name": "id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 142,
                                  "src": "2680:2:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2672:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2664:19:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "57524f4e475f46524f4d",
                              "id": 151,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2685:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f70366941d4d371c05a2457cbc0f4d05a3d6bc57ab01a7c3338bfed233eebe93",
                                "typeString": "literal_string \"WRONG_FROM\""
                              },
                              "value": "WRONG_FROM"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f70366941d4d371c05a2457cbc0f4d05a3d6bc57ab01a7c3338bfed233eebe93",
                                "typeString": "literal_string \"WRONG_FROM\""
                              }
                            ],
                            "id": 145,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2656:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2656:42:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 153,
                        "nodeType": "ExpressionStatement",
                        "src": "2656:42:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 160,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 155,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 140,
                                "src": "2717:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 158,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2731:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 157,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2723:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 156,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2723:7:0",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 159,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2723:10:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2717:16:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e56414c49445f524543495049454e54",
                              "id": 161,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2735:19:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5e7bf34c5f9e77c6f415365fc02ea1195419ccebda18d14265f0c098f3687483",
                                "typeString": "literal_string \"INVALID_RECIPIENT\""
                              },
                              "value": "INVALID_RECIPIENT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5e7bf34c5f9e77c6f415365fc02ea1195419ccebda18d14265f0c098f3687483",
                                "typeString": "literal_string \"INVALID_RECIPIENT\""
                              }
                            ],
                            "id": 154,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2709:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 162,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2709:46:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 163,
                        "nodeType": "ExpressionStatement",
                        "src": "2709:46:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 182,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 175,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 168,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 165,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "2787:3:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 166,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "2787:10:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "id": 167,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 138,
                                    "src": "2801:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "2787:18:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 174,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 169,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "2809:3:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 170,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "2809:10:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "baseExpression": {
                                      "id": 171,
                                      "name": "getApproved",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 49,
                                      "src": "2823:11:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                        "typeString": "mapping(uint256 => address)"
                                      }
                                    },
                                    "id": 173,
                                    "indexExpression": {
                                      "id": 172,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 142,
                                      "src": "2835:2:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2823:15:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "2809:29:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "2787:51:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 176,
                                    "name": "isApprovedForAll",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 55,
                                    "src": "2842:16:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                      "typeString": "mapping(address => mapping(address => bool))"
                                    }
                                  },
                                  "id": 178,
                                  "indexExpression": {
                                    "id": 177,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 138,
                                    "src": "2859:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2842:22:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 181,
                                "indexExpression": {
                                  "expression": {
                                    "id": 179,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "2865:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 180,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "2865:10:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2842:34:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2787:89:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e4f545f415554484f52495a4544",
                              "id": 183,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2890:16:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e7e213d5e2bee0acc2c7bf8bfda19ef0cae82e7b8c997e7e898919269971e7c4",
                                "typeString": "literal_string \"NOT_AUTHORIZED\""
                              },
                              "value": "NOT_AUTHORIZED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e7e213d5e2bee0acc2c7bf8bfda19ef0cae82e7b8c997e7e898919269971e7c4",
                                "typeString": "literal_string \"NOT_AUTHORIZED\""
                              }
                            ],
                            "id": 164,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2766:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 184,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2766:150:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 185,
                        "nodeType": "ExpressionStatement",
                        "src": "2766:150:0"
                      },
                      {
                        "id": 196,
                        "nodeType": "UncheckedBlock",
                        "src": "3092:82:0",
                        "statements": [
                          {
                            "expression": {
                              "id": 189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "--",
                              "prefix": false,
                              "src": "3116:17:0",
                              "subExpression": {
                                "baseExpression": {
                                  "id": 186,
                                  "name": "balanceOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41,
                                  "src": "3116:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 188,
                                "indexExpression": {
                                  "id": 187,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 138,
                                  "src": "3126:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "3116:15:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 190,
                            "nodeType": "ExpressionStatement",
                            "src": "3116:17:0"
                          },
                          {
                            "expression": {
                              "id": 194,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": false,
                              "src": "3148:15:0",
                              "subExpression": {
                                "baseExpression": {
                                  "id": 191,
                                  "name": "balanceOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41,
                                  "src": "3148:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 193,
                                "indexExpression": {
                                  "id": 192,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 140,
                                  "src": "3158:2:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "3148:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 195,
                            "nodeType": "ExpressionStatement",
                            "src": "3148:15:0"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 197,
                              "name": "ownerOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 45,
                              "src": "3184:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 199,
                            "indexExpression": {
                              "id": 198,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 142,
                              "src": "3192:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3184:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 200,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 140,
                            "src": "3198:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3184:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 202,
                        "nodeType": "ExpressionStatement",
                        "src": "3184:16:0"
                      },
                      {
                        "expression": {
                          "id": 206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "3211:22:0",
                          "subExpression": {
                            "baseExpression": {
                              "id": 203,
                              "name": "getApproved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 49,
                              "src": "3218:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 205,
                            "indexExpression": {
                              "id": 204,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 142,
                              "src": "3230:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3218:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 207,
                        "nodeType": "ExpressionStatement",
                        "src": "3211:22:0"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 209,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 138,
                              "src": "3258:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 210,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 140,
                              "src": "3264:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 211,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 142,
                              "src": "3268:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 208,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10,
                            "src": "3249:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 212,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3249:22:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 213,
                        "nodeType": "EmitStatement",
                        "src": "3244:27:0"
                      }
                    ]
                  },
                  "functionSelector": "23b872dd",
                  "id": 215,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nameLocation": "2550:12:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 143,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 138,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "2580:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 215,
                        "src": "2572:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 137,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2572:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 140,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "2602:2:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 215,
                        "src": "2594:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 139,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2594:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 142,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "2622:2:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 215,
                        "src": "2614:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 141,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2614:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2562:68:0"
                  },
                  "returnParameters": {
                    "id": 144,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2646:0:0"
                  },
                  "scope": 500,
                  "src": "2541:737:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 254,
                    "nodeType": "Block",
                    "src": "3393:287:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 225,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 217,
                              "src": "3416:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 226,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 219,
                              "src": "3422:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 227,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 221,
                              "src": "3426:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 224,
                            "name": "transferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 215,
                            "src": "3403:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 228,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3403:26:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 229,
                        "nodeType": "ExpressionStatement",
                        "src": "3403:26:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 250,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 235,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "expression": {
                                      "id": 231,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 219,
                                      "src": "3461:2:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 232,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "code",
                                    "nodeType": "MemberAccess",
                                    "src": "3461:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 233,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "3461:14:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 234,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3479:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3461:19:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 249,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 240,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "3541:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 241,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "3541:10:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 242,
                                      "name": "from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 217,
                                      "src": "3553:4:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 243,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 221,
                                      "src": "3559:2:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "",
                                      "id": 244,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3563:2:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                        "typeString": "literal_string \"\""
                                      },
                                      "value": ""
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                        "typeString": "literal_string \"\""
                                      }
                                    ],
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 237,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 219,
                                          "src": "3520:2:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 236,
                                        "name": "ERC721TokenReceiver",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 515,
                                        "src": "3500:19:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_ERC721TokenReceiver_$515_$",
                                          "typeString": "type(contract ERC721TokenReceiver)"
                                        }
                                      },
                                      "id": 238,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3500:23:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ERC721TokenReceiver_$515",
                                        "typeString": "contract ERC721TokenReceiver"
                                      }
                                    },
                                    "id": 239,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "onERC721Received",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 514,
                                    "src": "3500:40:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                      "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)"
                                    }
                                  },
                                  "id": 245,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3500:66:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "expression": {
                                      "id": 246,
                                      "name": "ERC721TokenReceiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 515,
                                      "src": "3586:19:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_ERC721TokenReceiver_$515_$",
                                        "typeString": "type(contract ERC721TokenReceiver)"
                                      }
                                    },
                                    "id": 247,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "onERC721Received",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 514,
                                    "src": "3586:36:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                                      "typeString": "function ERC721TokenReceiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"
                                    }
                                  },
                                  "id": 248,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "3586:45:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "3500:131:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3461:170:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "554e534146455f524543495049454e54",
                              "id": 251,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3645:18:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d",
                                "typeString": "literal_string \"UNSAFE_RECIPIENT\""
                              },
                              "value": "UNSAFE_RECIPIENT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d",
                                "typeString": "literal_string \"UNSAFE_RECIPIENT\""
                              }
                            ],
                            "id": 230,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3440:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 252,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3440:233:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 253,
                        "nodeType": "ExpressionStatement",
                        "src": "3440:233:0"
                      }
                    ]
                  },
                  "functionSelector": "42842e0e",
                  "id": 255,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nameLocation": "3293:16:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 222,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 217,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "3327:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 255,
                        "src": "3319:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 216,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3319:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 219,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "3349:2:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 255,
                        "src": "3341:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 218,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3341:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 221,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "3369:2:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 255,
                        "src": "3361:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 220,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3361:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3309:68:0"
                  },
                  "returnParameters": {
                    "id": 223,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3393:0:0"
                  },
                  "scope": 500,
                  "src": "3284:396:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 296,
                    "nodeType": "Block",
                    "src": "3822:289:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 267,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 257,
                              "src": "3845:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 268,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 259,
                              "src": "3851:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 269,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 261,
                              "src": "3855:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 266,
                            "name": "transferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 215,
                            "src": "3832:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 270,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3832:26:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 271,
                        "nodeType": "ExpressionStatement",
                        "src": "3832:26:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 292,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 277,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "expression": {
                                      "id": 273,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 259,
                                      "src": "3890:2:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 274,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "code",
                                    "nodeType": "MemberAccess",
                                    "src": "3890:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 275,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "3890:14:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 276,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3908:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3890:19:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 291,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 282,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "3970:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 283,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "3970:10:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 284,
                                      "name": "from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 257,
                                      "src": "3982:4:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 285,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 261,
                                      "src": "3988:2:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 286,
                                      "name": "data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 263,
                                      "src": "3992:4:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 279,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 259,
                                          "src": "3949:2:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 278,
                                        "name": "ERC721TokenReceiver",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 515,
                                        "src": "3929:19:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_ERC721TokenReceiver_$515_$",
                                          "typeString": "type(contract ERC721TokenReceiver)"
                                        }
                                      },
                                      "id": 280,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3929:23:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ERC721TokenReceiver_$515",
                                        "typeString": "contract ERC721TokenReceiver"
                                      }
                                    },
                                    "id": 281,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "onERC721Received",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 514,
                                    "src": "3929:40:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                      "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)"
                                    }
                                  },
                                  "id": 287,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3929:68:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "expression": {
                                      "id": 288,
                                      "name": "ERC721TokenReceiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 515,
                                      "src": "4017:19:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_ERC721TokenReceiver_$515_$",
                                        "typeString": "type(contract ERC721TokenReceiver)"
                                      }
                                    },
                                    "id": 289,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "onERC721Received",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 514,
                                    "src": "4017:36:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                                      "typeString": "function ERC721TokenReceiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"
                                    }
                                  },
                                  "id": 290,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "4017:45:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "3929:133:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3890:172:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "554e534146455f524543495049454e54",
                              "id": 293,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4076:18:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d",
                                "typeString": "literal_string \"UNSAFE_RECIPIENT\""
                              },
                              "value": "UNSAFE_RECIPIENT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d",
                                "typeString": "literal_string \"UNSAFE_RECIPIENT\""
                              }
                            ],
                            "id": 272,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3869:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3869:235:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 295,
                        "nodeType": "ExpressionStatement",
                        "src": "3869:235:0"
                      }
                    ]
                  },
                  "functionSelector": "b88d4fde",
                  "id": 297,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nameLocation": "3695:16:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 264,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 257,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "3729:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 297,
                        "src": "3721:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 256,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3721:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 259,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "3751:2:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 297,
                        "src": "3743:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 258,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3743:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 261,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "3771:2:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 297,
                        "src": "3763:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 260,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3763:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 263,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3796:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 297,
                        "src": "3783:17:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 262,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3783:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3711:95:0"
                  },
                  "returnParameters": {
                    "id": 265,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3822:0:0"
                  },
                  "scope": 500,
                  "src": "3686:425:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 316,
                    "nodeType": "Block",
                    "src": "4382:253:0",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 314,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 310,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 306,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 304,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 299,
                                "src": "4411:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30783031666663396137",
                                "id": 305,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4426:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_33540519_by_1",
                                  "typeString": "int_const 33540519"
                                },
                                "value": "0x01ffc9a7"
                              },
                              "src": "4411:25:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 309,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 307,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 299,
                                "src": "4486:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30783830616335386364",
                                "id": 308,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4501:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2158778573_by_1",
                                  "typeString": "int_const 2158778573"
                                },
                                "value": "0x80ac58cd"
                              },
                              "src": "4486:25:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "4411:100:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 313,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 311,
                              "name": "interfaceId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 299,
                              "src": "4561:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30783562356531333966",
                              "id": 312,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4576:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1532892063_by_1",
                                "typeString": "int_const 1532892063"
                              },
                              "value": "0x5b5e139f"
                            },
                            "src": "4561:25:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4411:175:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 303,
                        "id": 315,
                        "nodeType": "Return",
                        "src": "4392:194:0"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 317,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "4309:17:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 300,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 299,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nameLocation": "4334:11:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 317,
                        "src": "4327:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 298,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "4327:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4326:20:0"
                  },
                  "returnParameters": {
                    "id": 303,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 302,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 317,
                        "src": "4376:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 301,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4376:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4375:6:0"
                  },
                  "scope": 500,
                  "src": "4300:335:0",
                  "stateMutability": "pure",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 367,
                    "nodeType": "Block",
                    "src": "4885:312:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 330,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 325,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 319,
                                "src": "4903:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 328,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4917:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 327,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4909:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 326,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4909:7:0",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 329,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4909:10:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4903:16:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e56414c49445f524543495049454e54",
                              "id": 331,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4921:19:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5e7bf34c5f9e77c6f415365fc02ea1195419ccebda18d14265f0c098f3687483",
                                "typeString": "literal_string \"INVALID_RECIPIENT\""
                              },
                              "value": "INVALID_RECIPIENT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5e7bf34c5f9e77c6f415365fc02ea1195419ccebda18d14265f0c098f3687483",
                                "typeString": "literal_string \"INVALID_RECIPIENT\""
                              }
                            ],
                            "id": 324,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4895:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 332,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4895:46:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 333,
                        "nodeType": "ExpressionStatement",
                        "src": "4895:46:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 342,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "baseExpression": {
                                  "id": 335,
                                  "name": "ownerOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45,
                                  "src": "4960:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                    "typeString": "mapping(uint256 => address)"
                                  }
                                },
                                "id": 337,
                                "indexExpression": {
                                  "id": 336,
                                  "name": "id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 321,
                                  "src": "4968:2:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4960:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 340,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4983:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 339,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4975:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 338,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4975:7:0",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 341,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4975:10:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4960:25:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "414c52454144595f4d494e544544",
                              "id": 343,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4987:16:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e3f56786f4dc15ea567a5bcea1aa6e11424106cac78b0acf41b1b7deccad9f1b",
                                "typeString": "literal_string \"ALREADY_MINTED\""
                              },
                              "value": "ALREADY_MINTED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e3f56786f4dc15ea567a5bcea1aa6e11424106cac78b0acf41b1b7deccad9f1b",
                                "typeString": "literal_string \"ALREADY_MINTED\""
                              }
                            ],
                            "id": 334,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4952:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 344,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4952:52:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 345,
                        "nodeType": "ExpressionStatement",
                        "src": "4952:52:0"
                      },
                      {
                        "id": 351,
                        "nodeType": "UncheckedBlock",
                        "src": "5070:50:0",
                        "statements": [
                          {
                            "expression": {
                              "id": 349,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": false,
                              "src": "5094:15:0",
                              "subExpression": {
                                "baseExpression": {
                                  "id": 346,
                                  "name": "balanceOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41,
                                  "src": "5094:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 348,
                                "indexExpression": {
                                  "id": 347,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 319,
                                  "src": "5104:2:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "5094:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 350,
                            "nodeType": "ExpressionStatement",
                            "src": "5094:15:0"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 352,
                              "name": "ownerOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 45,
                              "src": "5130:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 354,
                            "indexExpression": {
                              "id": 353,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 321,
                              "src": "5138:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5130:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 355,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 319,
                            "src": "5144:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5130:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 357,
                        "nodeType": "ExpressionStatement",
                        "src": "5130:16:0"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 361,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5179:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 360,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5171:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 359,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5171:7:0",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 362,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5171:10:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 363,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 319,
                              "src": "5183:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 364,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 321,
                              "src": "5187:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 358,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10,
                            "src": "5162:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5162:28:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 366,
                        "nodeType": "EmitStatement",
                        "src": "5157:33:0"
                      }
                    ]
                  },
                  "id": 368,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nameLocation": "4838:5:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 322,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 319,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "4852:2:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 368,
                        "src": "4844:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 318,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4844:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 321,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "4864:2:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 368,
                        "src": "4856:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 320,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4856:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4843:24:0"
                  },
                  "returnParameters": {
                    "id": 323,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4885:0:0"
                  },
                  "scope": 500,
                  "src": "4829:368:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 416,
                    "nodeType": "Block",
                    "src": "5247:330:0",
                    "statements": [
                      {
                        "assignments": [
                          374
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 374,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "5265:5:0",
                            "nodeType": "VariableDeclaration",
                            "scope": 416,
                            "src": "5257:13:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 373,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5257:7:0",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 378,
                        "initialValue": {
                          "baseExpression": {
                            "id": 375,
                            "name": "ownerOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45,
                            "src": "5273:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 377,
                          "indexExpression": {
                            "id": 376,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 370,
                            "src": "5281:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5273:11:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5257:27:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 387,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "baseExpression": {
                                  "id": 380,
                                  "name": "ownerOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45,
                                  "src": "5303:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                    "typeString": "mapping(uint256 => address)"
                                  }
                                },
                                "id": 382,
                                "indexExpression": {
                                  "id": 381,
                                  "name": "id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 370,
                                  "src": "5311:2:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5303:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 385,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5326:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 384,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5318:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 383,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5318:7:0",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 386,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5318:10:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "5303:25:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e4f545f4d494e544544",
                              "id": 388,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5330:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e904b298bc24890ae0c043938d840f08b90773c1635904efe1336d6f851f98ca",
                                "typeString": "literal_string \"NOT_MINTED\""
                              },
                              "value": "NOT_MINTED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e904b298bc24890ae0c043938d840f08b90773c1635904efe1336d6f851f98ca",
                                "typeString": "literal_string \"NOT_MINTED\""
                              }
                            ],
                            "id": 379,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5295:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 389,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5295:48:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 390,
                        "nodeType": "ExpressionStatement",
                        "src": "5295:48:0"
                      },
                      {
                        "id": 396,
                        "nodeType": "UncheckedBlock",
                        "src": "5409:53:0",
                        "statements": [
                          {
                            "expression": {
                              "id": 394,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "--",
                              "prefix": false,
                              "src": "5433:18:0",
                              "subExpression": {
                                "baseExpression": {
                                  "id": 391,
                                  "name": "balanceOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41,
                                  "src": "5433:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 393,
                                "indexExpression": {
                                  "id": 392,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 374,
                                  "src": "5443:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "5433:16:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 395,
                            "nodeType": "ExpressionStatement",
                            "src": "5433:18:0"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 400,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "5472:18:0",
                          "subExpression": {
                            "baseExpression": {
                              "id": 397,
                              "name": "ownerOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 45,
                              "src": "5479:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 399,
                            "indexExpression": {
                              "id": 398,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 370,
                              "src": "5487:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5479:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 401,
                        "nodeType": "ExpressionStatement",
                        "src": "5472:18:0"
                      },
                      {
                        "expression": {
                          "id": 405,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "5501:22:0",
                          "subExpression": {
                            "baseExpression": {
                              "id": 402,
                              "name": "getApproved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 49,
                              "src": "5508:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 404,
                            "indexExpression": {
                              "id": 403,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 370,
                              "src": "5520:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5508:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 406,
                        "nodeType": "ExpressionStatement",
                        "src": "5501:22:0"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 408,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 374,
                              "src": "5548:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 411,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5563:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 410,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5555:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 409,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5555:7:0",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 412,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5555:10:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 413,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 370,
                              "src": "5567:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 407,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10,
                            "src": "5539:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5539:31:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 415,
                        "nodeType": "EmitStatement",
                        "src": "5534:36:0"
                      }
                    ]
                  },
                  "id": 417,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burn",
                  "nameLocation": "5212:5:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 371,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 370,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "5226:2:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 417,
                        "src": "5218:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 369,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5218:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5217:12:0"
                  },
                  "returnParameters": {
                    "id": 372,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5247:0:0"
                  },
                  "scope": 500,
                  "src": "5203:374:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 456,
                    "nodeType": "Block",
                    "src": "5831:280:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 425,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 419,
                              "src": "5847:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 426,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 421,
                              "src": "5851:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 424,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 368,
                            "src": "5841:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 427,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5841:13:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 428,
                        "nodeType": "ExpressionStatement",
                        "src": "5841:13:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 452,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 434,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "expression": {
                                      "id": 430,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 419,
                                      "src": "5886:2:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 431,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "code",
                                    "nodeType": "MemberAccess",
                                    "src": "5886:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 432,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "5886:14:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 433,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5904:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5886:19:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 451,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 439,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "5966:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 440,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "5966:10:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 443,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "5986:1:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          }
                                        ],
                                        "id": 442,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "5978:7:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 441,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "5978:7:0",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 444,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5978:10:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 445,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 421,
                                      "src": "5990:2:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "",
                                      "id": 446,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5994:2:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                        "typeString": "literal_string \"\""
                                      },
                                      "value": ""
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                        "typeString": "literal_string \"\""
                                      }
                                    ],
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 436,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 419,
                                          "src": "5945:2:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 435,
                                        "name": "ERC721TokenReceiver",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 515,
                                        "src": "5925:19:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_ERC721TokenReceiver_$515_$",
                                          "typeString": "type(contract ERC721TokenReceiver)"
                                        }
                                      },
                                      "id": 437,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5925:23:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ERC721TokenReceiver_$515",
                                        "typeString": "contract ERC721TokenReceiver"
                                      }
                                    },
                                    "id": 438,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "onERC721Received",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 514,
                                    "src": "5925:40:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                      "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)"
                                    }
                                  },
                                  "id": 447,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5925:72:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "expression": {
                                      "id": 448,
                                      "name": "ERC721TokenReceiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 515,
                                      "src": "6017:19:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_ERC721TokenReceiver_$515_$",
                                        "typeString": "type(contract ERC721TokenReceiver)"
                                      }
                                    },
                                    "id": 449,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "onERC721Received",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 514,
                                    "src": "6017:36:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                                      "typeString": "function ERC721TokenReceiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"
                                    }
                                  },
                                  "id": 450,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "6017:45:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "5925:137:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5886:176:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "554e534146455f524543495049454e54",
                              "id": 453,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6076:18:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d",
                                "typeString": "literal_string \"UNSAFE_RECIPIENT\""
                              },
                              "value": "UNSAFE_RECIPIENT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d",
                                "typeString": "literal_string \"UNSAFE_RECIPIENT\""
                              }
                            ],
                            "id": 429,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5865:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 454,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5865:239:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 455,
                        "nodeType": "ExpressionStatement",
                        "src": "5865:239:0"
                      }
                    ]
                  },
                  "id": 457,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeMint",
                  "nameLocation": "5780:9:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 422,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 419,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "5798:2:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 457,
                        "src": "5790:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 418,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5790:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 421,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "5810:2:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 457,
                        "src": "5802:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 420,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5802:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5789:24:0"
                  },
                  "returnParameters": {
                    "id": 423,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5831:0:0"
                  },
                  "scope": 500,
                  "src": "5771:340:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 498,
                    "nodeType": "Block",
                    "src": "6226:282:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 467,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 459,
                              "src": "6242:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 468,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 461,
                              "src": "6246:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 466,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 368,
                            "src": "6236:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 469,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6236:13:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 470,
                        "nodeType": "ExpressionStatement",
                        "src": "6236:13:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 494,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 476,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "expression": {
                                      "id": 472,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 459,
                                      "src": "6281:2:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 473,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "code",
                                    "nodeType": "MemberAccess",
                                    "src": "6281:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 474,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "6281:14:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 475,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6299:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "6281:19:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 493,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 481,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "6361:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 482,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "6361:10:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 485,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "6381:1:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          }
                                        ],
                                        "id": 484,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "6373:7:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 483,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "6373:7:0",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 486,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6373:10:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 487,
                                      "name": "id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 461,
                                      "src": "6385:2:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 488,
                                      "name": "data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 463,
                                      "src": "6389:4:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 478,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 459,
                                          "src": "6340:2:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 477,
                                        "name": "ERC721TokenReceiver",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 515,
                                        "src": "6320:19:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_ERC721TokenReceiver_$515_$",
                                          "typeString": "type(contract ERC721TokenReceiver)"
                                        }
                                      },
                                      "id": 479,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6320:23:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ERC721TokenReceiver_$515",
                                        "typeString": "contract ERC721TokenReceiver"
                                      }
                                    },
                                    "id": 480,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "onERC721Received",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 514,
                                    "src": "6320:40:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                      "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)"
                                    }
                                  },
                                  "id": 489,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6320:74:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "expression": {
                                      "id": 490,
                                      "name": "ERC721TokenReceiver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 515,
                                      "src": "6414:19:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_ERC721TokenReceiver_$515_$",
                                        "typeString": "type(contract ERC721TokenReceiver)"
                                      }
                                    },
                                    "id": 491,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "onERC721Received",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 514,
                                    "src": "6414:36:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                                      "typeString": "function ERC721TokenReceiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"
                                    }
                                  },
                                  "id": 492,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "6414:45:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "6320:139:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "6281:178:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "554e534146455f524543495049454e54",
                              "id": 495,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6473:18:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d",
                                "typeString": "literal_string \"UNSAFE_RECIPIENT\""
                              },
                              "value": "UNSAFE_RECIPIENT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d",
                                "typeString": "literal_string \"UNSAFE_RECIPIENT\""
                              }
                            ],
                            "id": 471,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6260:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 496,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6260:241:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 497,
                        "nodeType": "ExpressionStatement",
                        "src": "6260:241:0"
                      }
                    ]
                  },
                  "id": 499,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeMint",
                  "nameLocation": "6126:9:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 464,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 459,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "6153:2:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 499,
                        "src": "6145:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 458,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6145:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 461,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "6173:2:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 499,
                        "src": "6165:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 460,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6165:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 463,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "6198:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 499,
                        "src": "6185:17:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 462,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6185:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6135:73:0"
                  },
                  "returnParameters": {
                    "id": 465,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6226:0:0"
                  },
                  "scope": 500,
                  "src": "6117:391:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 516,
              "src": "333:6177:0",
              "usedErrors": []
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "ERC721TokenReceiver",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 501,
                "nodeType": "StructuredDocumentation",
                "src": "6512:179:0",
                "text": "@notice A generic interface for a contract which properly accepts ERC721 tokens.\n @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)"
              },
              "fullyImplemented": false,
              "id": 515,
              "linearizedBaseContracts": [
                515
              ],
              "name": "ERC721TokenReceiver",
              "nameLocation": "6701:19:0",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "150b7a02",
                  "id": 514,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC721Received",
                  "nameLocation": "6736:16:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 510,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 503,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "6770:8:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 514,
                        "src": "6762:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 502,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6762:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 505,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "6796:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 514,
                        "src": "6788:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 504,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6788:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 507,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "6818:2:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 514,
                        "src": "6810:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 506,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6810:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 509,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "6845:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 514,
                        "src": "6830:19:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 508,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6830:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6752:103:0"
                  },
                  "returnParameters": {
                    "id": 513,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 512,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 514,
                        "src": "6874:6:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 511,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "6874:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6873:8:0"
                  },
                  "scope": 515,
                  "src": "6727:155:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 516,
              "src": "6691:193:0",
              "usedErrors": []
            }
          ],
          "src": "42:6843:0"
        },
        "id": 0
      },
      "src/contracts/test/TestERC721.sol.sol": {
        "ast": {
          "absolutePath": "src/contracts/test/TestERC721.sol.sol",
          "exportedSymbols": {
            "ERC721": [
              500
            ],
            "ERC721TokenReceiver": [
              515
            ],
            "TestERC721": [
              551
            ]
          },
          "id": 552,
          "license": "Unlicense",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 517,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:24:1"
            },
            {
              "absolutePath": "@rari-capital/solmate/src/tokens/ERC721.sol",
              "file": "@rari-capital/solmate/src/tokens/ERC721.sol",
              "id": 518,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 552,
              "sourceUnit": 516,
              "src": "63:53:1",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": [
                    {
                      "hexValue": "54657374373231",
                      "id": 520,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "194:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_5e4fc3266b38a1d54c3392ffa0ebb8fdec2443209c72422b9f11bcda73479707",
                        "typeString": "literal_string \"Test721\""
                      },
                      "value": "Test721"
                    },
                    {
                      "hexValue": "545354373231",
                      "id": 521,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "205:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_e2ac7c04fe9bd2b2e32aeb0d2c31125f85fcd4949c0562b8e6a989488ce5ef91",
                        "typeString": "literal_string \"TST721\""
                      },
                      "value": "TST721"
                    }
                  ],
                  "baseName": {
                    "id": 519,
                    "name": "ERC721",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 500,
                    "src": "187:6:1"
                  },
                  "id": 522,
                  "nodeType": "InheritanceSpecifier",
                  "src": "187:27:1"
                }
              ],
              "canonicalName": "TestERC721",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 551,
              "linearizedBaseContracts": [
                551,
                500
              ],
              "name": "TestERC721",
              "nameLocation": "173:10:1",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 538,
                    "nodeType": "Block",
                    "src": "286:56:1",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 532,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 524,
                              "src": "302:2:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 533,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 526,
                              "src": "306:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 531,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 368,
                            "src": "296:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "296:18:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 535,
                        "nodeType": "ExpressionStatement",
                        "src": "296:18:1"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 536,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "331:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 530,
                        "id": 537,
                        "nodeType": "Return",
                        "src": "324:11:1"
                      }
                    ]
                  },
                  "functionSelector": "40c10f19",
                  "id": 539,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nameLocation": "230:4:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 527,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 524,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "243:2:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 539,
                        "src": "235:10:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 523,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "235:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 526,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "255:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 539,
                        "src": "247:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 525,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "247:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "234:29:1"
                  },
                  "returnParameters": {
                    "id": 530,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 529,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 539,
                        "src": "280:4:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 528,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "280:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "279:6:1"
                  },
                  "scope": 551,
                  "src": "221:121:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    37
                  ],
                  "body": {
                    "id": 549,
                    "nodeType": "Block",
                    "src": "420:34:1",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "746f6b656e555249",
                          "id": 547,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "437:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_7d2a7823b0c6bee58f8c694888f32f862c6584caa8afa0242de046d298ba684d",
                            "typeString": "literal_string \"tokenURI\""
                          },
                          "value": "tokenURI"
                        },
                        "functionReturnParameters": 546,
                        "id": 548,
                        "nodeType": "Return",
                        "src": "430:17:1"
                      }
                    ]
                  },
                  "functionSelector": "c87b56dd",
                  "id": 550,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokenURI",
                  "nameLocation": "357:8:1",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 543,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "387:8:1"
                  },
                  "parameters": {
                    "id": 542,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 541,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 550,
                        "src": "366:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 540,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "366:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "365:9:1"
                  },
                  "returnParameters": {
                    "id": 546,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 545,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 550,
                        "src": "405:13:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 544,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "405:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "404:15:1"
                  },
                  "scope": 551,
                  "src": "348:106:1",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 552,
              "src": "164:292:1",
              "usedErrors": []
            }
          ],
          "src": "37:420:1"
        },
        "id": 1
      }
    }
  }
}
